许多库导致原因:java.lang.OutOfMemoryError

时间:2019-05-26 20:04:52

标签: java android jvm out-of-memory

由于有很多库和类,我不得不放弃许多应用程序,所以最终我遇到了这个内存错误。最近,我开始使用JProfiler。但是,仍然没有不导致应用程序变大,现在又发生了这种情况。查看我的设置:

在gradle.properties中

org.gradle.jvmargs=-Xmx16g -XX:MaxPermSize=16g -XX:+HeapDumpOnOutOfMemoryError
GRADLE_OPTS=-Xmx16g

在gradle(app)

dexOptions { javaMaxHeapSize "16g" }

听起来这些值给它们1G或100G没什么区别。那么这并不重要,那是什么?这是JProfiler中的承诺大小,只有230 MB。在运行该应用程序之前,已经使用了80MB!查看图片:

空闲: enter image description here

内存错误: enter image description here

此提交的大小是发生内存不足错误的地方。如您在图片中看到的。当我按下运行按钮但它没有运行时,会发生内存错误,但与此同时,在JProfiler中,使用的大小接近已提交的大小,而当它足够接近繁荣时,就会出现错误。 那么,如何增加这个承诺的大小呢?现在我的设备剩余的内存不是1.55 GB。那这是什么?我不应该创建一个hello world应用程序。我编写了完全干净的代码,但我并没有导致此应用完美运行,没有慢的东西,没有溢出的东西。但是,当我添加更多库时,甚至还没有使用它们!我收到内存错误。这是堆漫步者:

enter image description here

对我来说看起来很正常.char和String在顶部是我该怎么办?请帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道gradle的细节,但是设置MaxHeapSize的标准开关是-Xmx;查看此处可能会有所帮助:Run application via gradlew with -Xmx and -Xms

如果您正在谈论运行该应用程序(而不是“构建”),则可以尝试先构建最终的JAR并将其作为独立的应用程序运行(通过java -Xmx... -jar)。

您收到任何特定的OOM错误吗?

顺便说一句。根据您发布的-XX:MaxPermSize,似乎您使用的是Java 8之前的旧版本(或者您未正确设置JVM args)。您应该考虑升级。