我在运行应用程序的JVM时遇到问题,其堆内存看起来像梳子。它不断从1.5 GB跳到3 GB,并逐渐恶化到更高的值。我正在使用G1 GC算法,但不知道如何配置它。
我无法访问我正在运行的应用的代码,不用说,这是一个相当大的应用。
那么,最重要的是,有没有人知道在Java中配置GC的好指南?
答案 0 :(得分: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的正确组合。像其他任何事情一样,只是盲目地抛弃选项而不知道他们做什么会导致更差的表现,而不是更好。
答案 1 :(得分:3)
来自Sun的Tuning Garbage Collection with the 5.0 Java Virtual Machine ... oops Oracle; - )
答案 2 :(得分:1)
目前,Hotspot VM中GC的最新资源如下:
Java Performance - 包含专门用于GC调整的完整章节
Java One 2012 Advanced JVM Tuning - 大部分演讲都专注于GC调整。