Java 如何将JVM配置为等待而不是抛出OutOfMemoryError
如何等待垃圾收集器而不是JVM抛出OutOfMemoryError?是否有一些JVM或Otherr选项的设置(如代码实践)Java 如何将JVM配置为等待而不是抛出OutOfMemoryError,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,如何等待垃圾收集器而不是JVM抛出OutOfMemoryError?是否有一些JVM或Otherr选项的设置(如代码实践) 我不想刺激JVM内存设置或调优GC-只等待GC,而不出现OutOfMemoryError,因为我知道没有内存泄漏,只是垃圾阻止了新的分配。恐怕你的问题没有多大意义 OutOfMemoryException通常在GC运行并且未能成功回收足够的内存以继续运行后引发。等待GC(再次)运行不太可能有帮助。如果它没有帮助,结果是你的应用程序将被冻结 此外,没有办法做到这一点。恐怕你的
我不想刺激JVM内存设置或调优GC-只等待GC,而不出现OutOfMemoryError,因为我知道没有内存泄漏,只是垃圾阻止了新的分配。恐怕你的问题没有多大意义 OutOfMemoryException通常在GC运行并且未能成功回收足够的内存以继续运行后引发。等待GC(再次)运行不太可能有帮助。如果它没有帮助,结果是你的应用程序将被冻结
此外,没有办法做到这一点。恐怕你的问题没有多大意义 OutOfMemoryException通常在GC运行并且未能成功回收足够的内存以继续运行后引发。等待GC(再次)运行不太可能有帮助。如果它没有帮助,结果是你的应用程序将被冻结
此外,没有办法做到这一点。您可能可以调整JVM何时放弃并抛出OOM的阈值,但这是JVM在检测到垃圾收集没有完成任何事情时根据设计所做的。请注意,JVM不会抛出OOM,因为时间安排不好,或者仅仅因为您创建了很多对象。它将检测到它已重复运行GC,并且GC未释放任何大量内存 一些可能性:
最后,运行一个探查器来查看您正在使用的内存。任何程序的第一次迭代几乎总是会有巨大的、悬而未决的结果需要清理。您可能可以调整JVM何时放弃并抛出OOM的阈值,但这是JVM在检测到垃圾收集没有完成任何事情时的设计。请注意,JVM不会抛出OOM,因为时间安排不好,或者仅仅因为您创建了很多对象。它将检测到它已重复运行GC,并且GC未释放任何大量内存 一些可能性: