java - 有谁知道在 Java 中配置 GC 的好指南?

标签 java garbage-collection jvm

我在运行应用程序的 JVM 时遇到问题,该应用程序的堆内存看起来像一把梳子。它不断地从 1.5 GB 跳到 3 GB,然后慢慢退化到更高的值。我正在使用 G1 GC 算法,但不知道如何配置它。

我无法访问我正在运行的应用程序的代码,不用说,这是一个相当大的应用程序。

总而言之,有人知道在 Java 中配置 GC 的好指南吗?

最佳答案

调整 JVM 是艺术与科学的结合,没有适合所有人的答案。您看到的情况听起来像是默认 GC 正在执行“现在标记,稍后清理”,这可能会导致清理期间暂停。您可以尝试的一组选项:

JAVA_OPTS="-server -XX:-UseParallelGC -XX:-UseConcMarkSweepGC"

该选项组合基本上在后台运行另一个线程(井 2),不断标记和清扫 GC。您付出的代价是更多的 CPU 使用,但在现代的 CPU 时代,大多数人几乎不会注意到这一点。

以下是所有选项:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

您确实需要通过 Google 阅读尽可能多的关于“java 性能调优”的文章,您需要分析您的应用程序(详细 GC)以了解它正在做什么以获取 Java 的正确参数组合。与其他任何事情一样,只是盲目地放弃选项而不了解它们的作用可能会导致更差的性能,而不是更好。

关于java - 有谁知道在 Java 中配置 GC 的好指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4505987/

相关文章:

java - Spring 4 MVC JSR303 @Valid 属性错误消息

java - 捕获每个错误和异常处的JVM快照

java - 在两个 JVM 之间快速传递图像数据

java - 向 java.lang.Object 添加一个字段

node.js - NodeJS V8 没有进行正确的垃圾收集

java - JDBC 连接不适用于 PowerMockito

java - 为什么ConcurrentHashMap中的HashEntry是final的?

java - 如何在 Firebase recyclerview 上设置适配器?

java - 关于 Java 垃圾收集,需要澄清

c# - 弱事件和GC