我们从Java 8升级到Java 11,现在当我们使用Java的程序运行时,它似乎耗尽了内存,这让我觉得垃圾收集出了问题。
我更改了以下值
"-Xms512m" "-Xmx512m"
对于这些值:
"-Xms512m" "-Xmx4096m"
但这似乎没有帮助。我想尝试强制 Java-11 使用与 Java-8 相同的默认垃圾收集方法,因为那里一切正常。
我需要编辑哪个文件才能强制使用某个垃圾收集?我希望 Java-11 使用
Parallel/Throughput GC
。
有什么建议吗?
您可以通过给 jvm 选项 -XX:+UseParallelGC 来告诉 Java 11 使用并行/吞吐量收集器,这也会隐式启用 UseParallelOldGC。请参阅https://docs.oracle.com/en/java/javase/11/gctuning/available-collectors.html。
不过我同意这些评论。我怀疑所使用的 GC 不是问题的真正原因。相反,我怀疑您存在内存泄漏或内存管理问题,并且使用 G1GC 比使用 ParallelGC 更明显。
正确的解决方案是调查问题的根本原因。摆弄 GC 选项是一个创可贴解决方案。即使修复现在有效,您将来也可能再次遇到问题;例如如果您的输入数据集变得更大。