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

我在运行应用程序的JVM上遇到了麻烦,它的堆内存看起来像梳子。 它不断从1.5 GB跳到3 GB,并逐渐恶化到更高的值。 我正在使用G1 GC算法,但不知道如何配置它。

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

那么,最重要的是,有没有人知道在Java中配置GC的好指南?

这是使用来自Sun 的5.0 Java虚拟机调优垃圾收集 … oops Oracle 😉

这是Java 6的链接

调整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的params的正确组合。 像其他任何事情一样,只是盲目地抛弃选项而不知道他们做什么会导致更糟糕的表现,而不是更好。

目前,Hotspot VM中GC的最新资源如下:

  • Java性能 – 包含专门用于GC调整的完整章节

  • Java One 2012 高级JVM调优 – 大部分讨论都专注于GC调优。