ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

尝试减少应用程序内存,我应该记录什么值?

2019-11-10 18:27:08  阅读:184  来源: 互联网

标签:android-memory android


我的应用程序经常内存不足.我正在努力减少内存使用量,但我想记录用户平均使用多少内存,可用内存等,以查看我所做的更改是否对现实世界产生影响.

我发现了可以捕获的这些值:

long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
long maxMemory = Runtime.getRuntime().maxMemory();

但是我不确定那些是正确的.这个freeMemory值是否可以告诉我是否可能出现OutOfMemoryError?如果没有,我应该记录哪些值?

解决方法:

Is that freeMemory value one that would tell me if I’m likely to get an OutOfMemoryError?

可能不是.

当您尝试进行分配并且没有足够大的可用块来满足该请求时,即使在紧急垃圾收集运行之后,也会发生OutOfMemoryError.在Android 7.1及更早版本上,由于垃圾收集器的特性,这可能是由于您的堆碎片化而发生的. freeMemory()表示所有空闲块的总和,而不是最大空闲块的大小.

因此,您需要查看所收到的OutOfMemoryError崩溃.通常,在Android中,这些将来自大量分配,例如加载位图.如果这是崩溃的根源,则freeMemory()几乎没有用,您无法登录.

另一方面,如果您因相当小的分配(例如128字节及更低)而崩溃,则很可能确实是在耗尽堆空间.在这种情况下,freeMemory()可能对日志记录很有用.

标签:android-memory,android
来源: https://codeday.me/bug/20191110/2014091.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有