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