我有很多应用程序被搁置并放弃,因为它们有很多库和类,所以最终我遇到了这个内存错误。最近我开始使用 JProfiler。但仍然无济于事,因为应用程序变得有点大,现在又发生了这种情况。查看我的设置:
在 gradle.properties 中
org.gradle.jvmargs=-Xmx16g -XX:MaxPermSize=16g -XX:+HeapDumpOnOutOfMemoryError
GRADLE_OPTS=-Xmx16g
在 gradle(应用程序) 中
dexOptions { javaMaxHeapSize "16g" }
听起来这些值对于 1G 或 100G 来说没有什么区别。这并不重要,那么什么才是重要的呢?这是 JProfiler 中的 promise 大小,只有 230 MB。在运行应用程序之前,已经使用了 80MB!看看图片:
此提交的大小是发生内存不足错误的地方。正如您在图片中看到的那样。当我按下运行按钮并且它不运行时会发生这种情况,它会给出内存错误,但同时在 JProfiler 中,使用的大小接近提交的大小,当它足够接近时,错误就会出现。 那么如何增加这个提交的大小呢?现在大约 1.55 GB 不是我的设备剩余内存。那这是什么?我不应该创建一个 hello world 应用程序。我编写了完全干净的代码,我不会导致这个应用程序运行完美,没有任何缓慢,没有任何溢出。但是当我添加更多库时甚至还没有使用它们!我收到内存错误。这是堆遍历器:
对我来说看起来很正常。char 和 String 位于顶部我该怎么办?请帮助我。谢谢!
最佳答案
我不知道 gradle 的具体情况,但了解设置 MaxHeapSize
的标准开关是 -Xmx
;在这里查看可能会有所帮助:Run application via gradlew with -Xmx and -Xms .
如果您正在谈论运行应用程序(而不是“构建它”),您可以尝试首先构建最终的 JAR 并将其作为独立应用程序运行(通过 java -Xmx... -jar
)。
您是否收到任何特定的 OOM 错误?
顺便说一句。基于-XX:MaxPermSize
您发布的内容似乎是您使用的是非常旧的 Java 8 之前的版本(或者您没有正确设置 JVM 参数)。您应该考虑升级。
关于java - 很多库导致Cause : java. lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316976/