Android studio 将 hprof 文件转储到项目文件夹中

Bar*_*ğlu 7 android gradle gradlew android-studio

将 gradle 版本更新到 3.3 后(我不确定这是否有任何影响),但有时,我的构建需要大约 30 分钟。当构建完成或取消时,我在项目的主包中看到一个名为“java_pid1160.hprof”的文件。文件大小约为 2-5~ GB。当这种情况发生时,我的 CPU 疯狂工作,并且我看到风扇活动增加。我知道 hprof 文件是 java 内存转储,但由于 Android Studio 有内存监视器并将内存转储到 hprof 文件,因此很难找到任何有用的东西。还有其他人遇到这个问题吗?

Vam*_*ire 7

我想说你的构建内存不足,Gradle 默认-XX:+HeapDumpOnOutOfMemoryError设置了,所以你会在内存不足的情况下得到堆转储。我想知道您是否也没有显示 OOM。

您应该尝试增加授予构建的最大内存。添加例如

org.gradle.jvmargs = -Xmx2g -XX:+HeapDumpOnOutOfMemoryError
Run Code Online (Sandbox Code Playgroud)

到您的项目gradle.properties文件(如果不存在则创建它,它必须位于根项目目录中)以增加最大内存。

当然,也可能是您的构建脚本中存在内存泄漏,导致内存累积溢出。如果您杀死了 gradle 守护进程gradlew --stop,然后此行为仅在几次构建后才出现,那么您可能存在内存泄漏,您应该调查并修复。如果停止守护进程后立即失败,您的构建可能只是需要更多内存。如果问题是内存泄漏,增加最大内存只会暂时有所帮助,并且在比以前更多的构建之后您将获得相同的行为。