当OOM发生时,如何让dalvik转储整个app堆内存

时间:2013-04-29 03:35:59

标签: java eclipse adt out-of-memory dalvik

我是Android开发的初学者。目前我正在寻找一种在发生内存不足错误时自动转储内存的方法。我读到添加-XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = /某些/你的jvm args的路径,这样当它耗尽内存时它将转储堆。但我找不到在哪里设置它。 有谁知道吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

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

没有等效的标志,但您可以实现类似的行为。 android.os.Debug.dumpHprofData()方法将当前堆转储写入您指定的文件。与UncaughtExceptionHandler设置的Thread.setDefaultUncaughtExceptionHandler()结合使用时,您可以在任何线程中捕获OOM并自行处理报告。 (只是不要太过分了......毕竟你 内存不足。)

您需要将处理程序链接到Android系统 - 请参阅Ideal way to set global uncaught exception Handler in Android

把这看起来像a quick example放在一起。