【问题标题】:Take a heap dump during Android integration tests when Out Of Memory error occurs发生内存不足错误时,在 Android 集成测试期间进行堆转储
【发布时间】:2013-06-06 05:33:05
【问题描述】:

我们的测试人员无法通过手动测试使我们的应用程序出现 OOM 错误,但是当我们运行集成测试时,在大约 50 次左右的测试之后,我们得到了 OOM 错误,而其余测试则没有完成。

当我们在集成测试期间遇到 OOM 时,我想转储堆。我正在使用 Maven 和 Spoon 来启动集成测试。我真的很想看看堆,看看是什么杀死了内存。我在测试运行期间尝试连接监视器,但是 ddms 尝试连接的端口被绑定。

【问题讨论】:

    标签: android integration-testing heap-dump


    【解决方案1】:

    测试基础设施可能已挂接到 ddms 端口。

    您实际上可以通过调用 android.os.Debug.dumpHprofData() 从测试中转储堆。测试应该在与您的应用程序相同的进程空间中运行。因此,它应该可以正常工作。在第 45 次测试之后开始在每个测试中获取堆转储,您可能会得到需要分析的堆转储。

    【讨论】:

    • 嗯,有时它发生得更早。这很随机。我真的很想在OOM发生时这样做。
    • 也许您可以尝试通过安装 UncaughtExceptionHandler 来捕获 OOME。查看 (bigflake.com/HeapDump.java.txt) 获取示例代码
    • 很好的例子。你刚刚教会了我一些新东西。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2015-11-09
    • 2013-06-27
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多