【发布时间】:2010-02-22 15:04:56
【问题描述】:
嗯,标题已经说明了。
知道还有多少内存可用也很方便。 我正在编写一个内存不足的应用程序,它往往会随机崩溃(在本机代码中), 我怀疑它内存不足。
【问题讨论】:
标签: android memory android-ndk
嗯,标题已经说明了。
知道还有多少内存可用也很方便。 我正在编写一个内存不足的应用程序,它往往会随机崩溃(在本机代码中), 我怀疑它内存不足。
【问题讨论】:
标签: android memory android-ndk
我认为您很难找到比这个主题更全面的答案:
How do I discover memory usage of my application in Android?
【讨论】:
我同意 hackbod 的回复。据我了解,您的应用程序不会崩溃,而是会被杀死。
你可能会觉得这个讨论很有趣
Is there a need to check for NULL after allocating memory, when kernel uses overcommit memory.
我想有一些回调知道内存不足的情况(onLowMemory()),你可以用它来识别内存不足的情况,不过我还没有尝试过。
【讨论】:
Android 上的应用程序通常不会因为内存不足而崩溃。如果您使用大量内存,您可能会导致大多数其他应用程序被杀死。如果你继续使用内存,你可能会导致系统也杀死你的应用程序(不是崩溃,只是杀死它),尽管在此之前你可能会达到明显的分页点。
如果您正在处理本机代码,则更有可能的解释是您在某处损坏了内存。
【讨论】:
您可能想要捕获 OutOfMemoryException,然后调用 System.gc() 来执行手动垃圾回收,然后重试失败的那段代码。您或许可以使用 JNI 的本机异常来检测 C++ 代码何时因内存不足而失败,或者进行预测。
【讨论】:
检查 http://kohlerm.blogspot.com/2010/02/android-memory-usage-analysis-slides.html 找出哪些 java 对象使用的内存最多
【讨论】: