java - 当 OOM 发生时,如何让 dalvik 转储整个应用程序堆内存

标签 java eclipse adt out-of-memory dalvik

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

最佳答案

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

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

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

A拼凑a quick example这会是什么样子。

关于java - 当 OOM 发生时,如何让 dalvik 转储整个应用程序堆内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270833/

相关文章:

android - 截至 2012 年 12 月 7 日,Eclipse 和 Android SDK 更新确实有问题

更新到 ADT 20 后的 Android 模拟器不再自动旋转屏幕

android - 如何在绝对布局中以编程方式移动按钮

android - ADT 22 带 Action 条夏洛克

java - Android:ListView ..在单击模式和多选模式之间转换(如:消息应用程序)

java - 模式和匹配器的问题

java - Android 应用程序 Activity

java - 在 Eclipse 中调试时实时更改变量?

java - 速度模板渲染的 urlrewritefilter 问题

java - 不带循环的整数数组交集递归