java - 很多库导致Cause : java. lang.OutOfMemoryError

标签 java android jvm out-of-memory

我有很多应用程序被搁置并放弃,因为它们有很多库和类,所以最终我遇到了这个内存错误。最近我开始使用 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!看看图片:

空闲: enter image description here

内存错误: enter image description here

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

enter image description here

对我来说看起来很正常。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/

相关文章:

java - 使用 jquery 根据 servlet 的结果更改 div 背景颜色

java - 结果集中的结果集

java - 绕过类型检查

android - 如何在 Android Canvas 中使用 "inverted"绘图进行绘制?

java - 符合specjvm2008基准测试

java - 无法处理隐式 super 构造函数抛出的异常类型

java - 在 TextView 中显示 json 值

jvm - 如何从 Activity 进程中卸载 JVM?

java - 集合中的 Spring bean 顺序。确定性的?

java - 任何人都有一个带有可扩展 ListView 的 xml 解析器