我在运行应用程序的JVM遇到问题,它的堆内存看起来像梳子。它不断从1.5 GB跳到3 GB,并逐渐恶化到更高的值。我使用G1 GC算法,但不知道如何配置它。有谁知道在Java中配置GC的好指南吗?
我无法访问正在运行的应用程序的代码,不用说,它是一个相当大的应用程序。
因此,底线,有谁知道一个很好的指导配置在Java Java GC?
我在运行应用程序的JVM遇到问题,它的堆内存看起来像梳子。它不断从1.5 GB跳到3 GB,并逐渐恶化到更高的值。我使用G1 GC算法,但不知道如何配置它。有谁知道在Java中配置GC的好指南吗?
我无法访问正在运行的应用程序的代码,不用说,它是一个相当大的应用程序。
因此,底线,有谁知道一个很好的指导配置在Java Java GC?
这是来自Sun Tuning Garbage Collection with the 5.0 Java Virtual Machine ...哎呀甲骨文;-)
调整JVM是一种艺术与科学的结合,每个人都没有答案。您所看到的情况听起来像默认的GC正在做一个“现在标记,稍后扫描”,这可能导致扫描期间暂停。选项一组,你可以尝试:
JAVA_OPTS="-server -XX:-UseParallelGC -XX:-UseConcMarkSweepGC"
,选项组合基本上运行在不断标记和清除的GC背景另一个线程(孔2)。你付出的代价是CPU的使用更多一些,但在现代CPU中,大多数人几乎不会注意到这一点。
这里是所有选项:http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
你真的需要通过谷歌阅读上的Java性能优化“的许多文章,你可以发现,你需要配置您的应用程序(详细GC)找出什么它正在做的是将正确的params组合到Java中。与其他任何事情一样,只是盲目抛出选项而不知道自己做了什么会导致更糟糕的表现,而不是更好。
目前的HotSpot虚拟机的最先进的最新资源GC是以下两个:
Java Performance - 包含一个完整的章节专门为GC调整
Java的一个2012 Advanced JVM Tuning - 大部分谈话都致力于GC调优。
Java上的版本控制有点不清楚。我正在运行java版本“1.6.0_21”。该指南是5岁,最新修订是在2005年。它仍然适用? – evilpenguin 2010-12-26 23:37:06