手机软件内存与手机qq占用内存太大不符合

Android开发实践:检测App的内存占用和泄漏_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android开发实践:检测App的内存占用和泄漏
来源:Linux社区&
作者:ticktick
前段时间开发的应用,每次都是在运行了半个小时左右后突然挂掉了,很是莫名其妙,也不知道哪里出了问题,后来一步步排查,发现问题出在JNI层,一个被频繁调用的函数分配的内存忘记释放,导致内存泄漏。
这次问题使我明白,别以为Android程序是基于Java语言,有强大的垃圾回收机制,就完全不用担心内存问题,其实Android程序也要特别小心你的内存,因为毕竟手机不比PC机,内存是极其有限的,在内存不够的时候,系统随时会Kill掉你的程序。目前我所了解到的,容易发生内存问题的地方如下:
(1) 操作Bitmap对象,一定要注意,在不使用的时候 recycle
(2) 访问数据库,一定要记得关闭游标
(3) 涉及JNI层的代码,由于JNI层是采用C/C++编写,需要自己管理内存的分配/回收,所以要慎重小心。
那么,Android开发中,有什么有效的方法可以检测内存使用情况以及内存泄漏呢?
这里主要介绍三种方法:
1. 程序的Log信息
程序在进行垃圾回收的时候,会打印一条Log信息(logcat窗口),例如:
D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free K, external K, paused 2ms+2ms
注意这条信息中的 & K& 值,这代表着程序使用的heap大小,如果这个值一直在增加,而从来不减小,那么就代表着你的程序存在着内存泄漏。
2. DDMS的Heap信息
Eclipse开发环境还提供了一种更加直观的方法来查看App的Heap信息,操作方式如下:
(1)& 连接手机,运行程序,假设是 com.ticktick.test 程序
(2)& 点击DDMS按钮,在左侧的Device窗口选中你要检测的程序(com.ticktick.test )
(3)& 点击Device窗口工具栏的第二个图标(Update Heap),
(4)& 点击右边的窗口的Cause GC按钮,即可得到当前程序的Heap信息
同样,随着程序的运行,多次点击得到的Heap大小,如果只增不减的话,也昭示着你的程序有内存泄漏。
3.& adb命令查看内存信息
其实,最全面最简单的方式还是用adb命令来查看程序的内存占用和内存泄漏情况,打开命令行窗口,adb命令的格式如下:
adb shell dumpsys meminfo &package_name&
其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name 来查找,在命令行窗口运行上述命令,得到的我的 com.ticktick.test 程序的内存情况如下所示:
这里得到的信息非常多,重点关注如下几个字段:
(1) Native/Dalvik 的 Heap 信息
具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
(2) Total 的 PSS 信息
这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。
关于Android开发中内存的使用情况和内存泄漏的检测就简单介绍到这里,基本上用以上三种方式都能够定位内存泄漏问题,平时在使用Bitmap,数据库和JNI层C/C++编程的时候,注意一点就行。另外,如果想深入了解文中的一些详细内容,可以参考Google官方提供的两篇文章,它们有着更详细的论述《Investigating Your RAM Usage》,《Managing Your App Memory》,有任何疑问或者不清楚的地方,欢迎留言或者来信lujun.交流。
更多Android相关信息见 专题页面
相关资讯 & & &
& (12月04日)
& (12月04日)
& (12月04日)
& (12月04日)
& (12月04日)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款您现在的位置: >
手机预装软件利益链曝光 不能卸载占内存还消耗流量
  为何下游付费高
  上游经销商刷机之后,可能被下游经销商刷掉,下游经销商刷机行为最保险,软件的留存率更高
  记者日前针对智能手机市场进行了走访调查,目前存在于手机中的大量预装软件“偷”走了流量,而这些软件背后的利益链条也逐一显现了出来。
  北京的消费者小王前不久买了部手机,买来时已预装近20款应用软件,过了不久他发现,手机的运行速度越来越慢,而且手机数据流量消耗也比以往快了很多。
  在一家手机安全检测机构相关技术人员的帮助下,小王发现,手机的十几款内置软件中,有八款正在运行,在手机主页面没有任何显示,只有打开后台的时候才会发现。而这八款正是他在购买这款手机时,被预装进手机的第三方软件,内存加起来竟有80M之多。
  小王尝试卸载掉这些用不着的手机应用软件,但卸载远比想象的要困难很多。一些公司表示,可以通过刷机获得手机的root权限,可以删除掉那些令他头疼的软件。
  而在随后与客服的沟通中记者也获悉,如果小王通过root权限擅自更改手机系统,自行删除掉手机中的预装软件,那么他的这台手机将不再享受保修服务。
  预装的手机应用软件用不到却又删不掉,如果选择自行更改系统删除软件,又不能享受到国家的三包政策,面对这样的尴尬与无奈,消费者只好选择忍受那些多余的软件,并继续为不断增加的手机流量而埋单。
  软件商如何付费
  (按软件的激活量计算,生产厂家安装一次并激活给0.8~1元)
  ■数字诱惑
  2012年我国
  智能手机销量1.5亿
  最新的相关数据表明,2012年我国的智能手机销量已经达到1.5亿左右,在这样的利润空间下,无论是正规渠道的手机,还是水货手机抑或是山寨机都不可避免地被预装了大量的应用软件。
  ■软件“进入”手机
  主渠道:手机生产厂家及运营经销商
  记者从业内人士处了解到,把第三方软件内置在手机里,主要通过两个渠道。
  一是通过手机生产厂家将这些软件预装在新手机中。随后记者联系了国内一家手机生产厂商的业务人员,该业务人员表示他们确实可以在手机中预装第三方软件。
  二是很多手机运营经销商也有办法在手机中安装第三方应用软件,行业内部把这一行为叫做“刷机”。调查中记者还注意到,一些科技论坛手机刷机论坛经常会出现一些刷机广告,发布者大都是打着“科技公司”或“电子科技公司”的名号,声称可以做刷机或者手机预装业务。
  背后:各级均有利可图 不同环节收费不同
  为何众多厂家、经销商和刷机公司仍然对手机软件预装业务如此热衷呢?
  一位手机厂家的营销人员告诉记者,提供预装服务,无论是生产厂商,手机代理商还是销售商都是有利可图的,其利润是按照单台(手机)大概是八毛到一块进行计算的。软件商付费的依据是按照软件的激活量来计算的,也就是手机用户只要点击了一次这些预装的应用软件,手机软件商就要付给厂家八毛到一块钱。
  从进一步的调查中记者发现,不同的手机预装机构都会成为预装利益链条中的一环,而不同的环节收费价格也不同。
  手机专家表示现在的情况就是逐层的刷机,往往是用户去市场上买了一个水货手机,很有可能在用户拿到手以后已经被刷过多次了,每一次刷机,这些人就会牟利,就可以得到一部分的经济利益。
  隐忧:不能卸载的软件占内存,还消耗流量
  业内人士告诉记者,尽管手机软件预装行业利润巨大,但潜在的威胁也不小,正规的手机生产厂商虽然能够通过检测保证第三方软件的安全性,但不能卸载的软件往往自动运行占用内存,也消耗流量,手机用户用不着也关不了,卸不掉备受困扰。而那些水货手机和山寨手机其安全性则更加难以保证。据《每周质量报告》
更多关于的新闻
数据加载中……
通过花期调控的“催花术”,植物...
企业所得税按照15%征收”在试...
发布厅里挤满人,让不少媒体人感...
今日图片:上海自贸区今日挂牌。
通过花期调控的“催花术”,植物...
24艘游船组成的列队,在礼花的...
今日图片:南翔老街千桌万...
360度屏幕仿佛将观众带...
||||||||||
文汇新民联合报业集团新民报系成员:||||
战略合作伙伴:||||
新民晚报官方网站
(C)2013 &All rights reserved.
“做民调 赢大奖”转盘抽奖
科沃斯地宝、交通卡、面包机、数码礼包、象印保温瓶等百份奖品等你拿
去试试手气
您已投过票
“做民调 赢大奖”转盘抽奖
科沃斯地宝、交通卡、面包机、数码礼包、象印保温瓶等百份奖品等你拿
去试试手气
密&&&&码:
下次自动登录&&&&
没有账号?&&&&
评论成功,谢谢参与!
点“看微博”查看您的
评论成功,谢谢参与!为什么我手机软件明明装在sd卡上,却占用手机内存?而且几乎就像是装在手机内存上一样。_百度知道
为什么我手机软件明明装在sd卡上,却占用手机内存?而且几乎就像是装在手机内存上一样。
提问者采纳
您可以在应用程序里,打开程序,移动至手机看看占用内存,然后移至sd卡,看看占用内存进行对比就一目了然。软件运行需要系统支持,就电脑操作系统,程序安装在d盘,但是c盘会写入文件,(动态链接库啥的)。没有这些文件就用不了软件的。
其他类似问题
为您推荐:
其他1条回答
你说的是内存还是手机内置存储?如果只是内存就没问题,好像电脑的内存一样使用,如果是手机内置存储就说明你没有将软件安装到sd卡上,只是把软件的安装文件下载到了sd卡上,安装之后的文件依旧在手机内置存储上,自己设置一下默认安装目录吧
您可能关注的推广
手机内存的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 安卓手机内存占用高 的文章

 

随机推荐