Android内存泄露调试.docx

Android内存泄露调试.docx

ID:61957341

大小:767.18 KB

页数:22页

时间:2021-04-01

Android内存泄露调试.docx_第1页
Android内存泄露调试.docx_第2页
Android内存泄露调试.docx_第3页
Android内存泄露调试.docx_第4页
Android内存泄露调试.docx_第5页
资源描述:

《Android内存泄露调试.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、优选Android 内存泄漏调试 一、概述 如果我们编写的代码当中有太多的对内存使用不当的地方,难免会使得我们的设备运行缓慢,甚至是死机。为了能够使得Android应用程序安全且快速的运行,Android的每个应用程序都会使用一个专有的Dalvik虚拟机实例来运行,即每个应用程序都是在属于自己的进程中运行的。一方面,如果程序在运行过程中出现了内存泄漏的问题,仅仅会使得自己的 进程被kill掉,而不会影响其他进程(如果是system_process等系统进程出问题的话,则会引起系统重启)。另一方面Android为不同类型的进程分配了不

2、同的内存使用上限,如果应用进程使用的内存超过了这个上限,则会被系统视为内存泄漏,从而被kill掉。Android为应用进程分配的内存上限如下所示: 位置:/ANDROID_SOURCE/system/core/rootdir/init.rc部分脚本```#Definetheoom_adjvaluesfortheclassesofprocessesthatcanbekilledbythekernel.#TheseareusedinActivityManagerService.setpropro.FOREGROUND_APP_ADJ0s

3、etpropro.VISIBLE_APP_ADJ1setpropro.SECONDARY_SERVER_ADJ2setpropro.BACKUP_APP_ADJ2setpropro.HOME_APP_ADJ4setpropro.HIDDEN_APP_MIN_ADJ7setpropro.CONTENT_PROVIDER_ADJ1422/22优选setpropro.EMPTY_APP_ADJ15#Definethememorythresholdsatwhichtheaboveprocessclasseswillbekilled.#The

4、senumbersareinpages(4k).setpropro.FOREGROUND_APP_MEM1536setpropro.VISIBLE_APP_MEM2048setpropro.SECONDARY_SERVER_MEM4096setpropro.BACKUP_APP_MEM4096setpropro.HOME_APP_MEM4096setpropro.HIDDEN_APP_MEM5120setpropro.CONTENT_PROVIDER_MEM5632setpropro.EMPTY_APP_MEM6144#Writev

5、aluemustbeconsistentwiththeaboveproperties.#Notethatthedriveronlysupports6slots,sowehaveHOME_APPatthesamememorylevelasservices.write/sys/module/lowmemorykiller/parameters/adj0,1,2,7,14,15write/proc/sys/vm/overmit_memory1write/proc/sys/vm/min_free_order_shift422/22优选wri

6、te/sys/module/lowmemorykiller/parameters/minfree1536,2048,4096,5120,5632,6144#Setinititsforkedchildren'soom_adj.write/proc/1/oom_adj-16·1·2·3·4·5·6·7·8·9·10·11·12·13·14·15·16·17·1822/22优选·19·20·21·22·23·24·25·26·27·28·29·30·1·2·3·4·5·6·7·8·9·1022/22优选·11·12·13·14·15·16

7、·17·18·19·20·21·22·23·24·25·26·27·28·29·30二、常见的内存使用不当的情况22/22优选(一)查询数据库没有关闭游标 描述: 程序中经常会进行查询数据库的操作,但是经常会有使用完毕Cursor后没有关闭的情况。 如果我们的查询结果集比较小,对内存的消耗不容易被发现,只有在常时间大量操作的情况 下才会复现内存问题,这样就会给以后的测试和问题排查带来困难和风险。示例代码:Cursorcursor=getContentResolver().query(uri...);if(cursor.moveToN

8、ext()){......}·1·2·1·2修正示例代码:Cursorcursor=null;try{cursor=getContentResolver().query(uri...);if(cursor!=null&&cursor.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。