0

我是Android开发的初学者。目前我正在寻找一种在发生内存不足错误时自动转储内存的方法。我读到将 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/some/path 添加到您的 jvm args 中,这样当内存不足时,它将转储堆。但我找不到在哪里设置它。有人知道吗?多谢。

4

1 回答 1

1

您列出的标志适用于 Oracle VM,而不是 Dalvik。

没有等效的标志,但您可以实现类似的行为。该android.os.Debug.dumpHprofData()方法会将当前堆转储写入您指定的文件。与UncaughtExceptionHandlerset by结合使用时Thread.setDefaultUncaughtExceptionHandler(),您可以在任何线程中捕获 OOM 并自行处理报告。(只是不要太得意忘形......毕竟你已经失忆了。)

您需要将处理程序链接到 Android 系统之一 - 另请参阅在 Android 中设置全局未捕获异常处理程序的理想方法

A 拼凑了一个简单的例子来说明这会是什么样子。

于 2013-05-03T17:36:11.057 回答