java - 是否可以通过指定 Gcflags来修复 OutOfMemory 错误?

标签 java garbage-collection jvm out-of-memory

指定 Gcflags是 OutOfMemory 异常的可能解决方案,还是没有影响或程序是否会耗尽内存?

有问题的 Gcflags是:-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode

我问是因为我认为上面的标志(和一般的 Gcflags)可以调整 JVM 性能(相对于它的响应/速度),但它们对减少程序的最小内存需求没有影响.换句话说,如果没有足够的内存让程序运行完成(例如遇到 OutOfMemory 异常),再多的 JVM 调优也无法解决这个问题。

最佳答案

如果您收到 OutOfMemoryError: heap space,您将无能为力。在 GC 将最后一个字节从堆中取出之前,JVM 永远不会抛出这个。

但是,如果您遇到 OutOfMemoryError: GC overhead limit exceeded,那么您仍然可以采取一些措施来解决它,因为这是一个“软”错误,并且可能有一个配置设置将减少 GC 开销。非常不可能,我必须补充一点,但至少在理论上是可能的。

关于java - 是否可以通过指定 Gcflags来修复 OutOfMemory 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018289/

相关文章:

java - 变量 'adapter' 是从内部类中访问的。需要宣布最终

java - XmlElement 注解可以有多种类型吗?

javascript - JS垃圾收集器会清除堆栈内存吗?

java - 为什么堆转储的大小小于 JVM 消耗的大小?

java - 异常(exception):JTA事务意外回滚(可能是由于超时)

Java 优化器和冗余数组评估

java - 弱引用的 NewGlobalRef 仍然阻止对象被垃圾收集

java - 如何让 PSOldGen 扩展以容纳非常大的对象?

java - 在函数重载的情况下,JVM 如何找到要调用的方法(具有最接近匹配的参数)

java - Files.getLastModifiedTime() 是否泄漏内存?