当前位置:  开发笔记 > 编程语言 > 正文

在哪种情况下,年轻一代的Java垃圾收集持续多久?

如何解决《在哪种情况下,年轻一代的Java垃圾收集持续多久?》经验,为你挑选了1个好方法。

昨天我们在一个JBoss应用服务器的服务器日志中输出了以下GC:

51628.286: [GC 51628.288: [ParNew: 1843200K->204800K(1843200K), 21.3196040 secs]
5177730K->3743415K(7987200K), 21.3217870 secs]
[Times: user=1.38 sys=0.33, real=21.32 secs] 

我理解这样的输出:年轻一代的大小为1843200K.前一代的尺寸为1843200K,尺寸在204800K之后.收集持续了21.3秒.

通常我们的年轻一代收藏持续时间<1秒.yg集合在哪种情况下持续这么久?

我们的JVM参数:

-server 
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails 
-XX:NewRatio=3
-XX:+UseConcMarkSweepGC 
-XX:+UseParNewGC 
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSInitiatingOccupancyFraction=60 
-XX:MaxPermSize=256m 
-Xss512k 
-Xms8000m 
-Xmx8000m

java版本:

java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

谢谢,马塞尔



1> Matthew Farw..:

我们有一个tomcat服务器,垃圾收集持续约2分钟.最后,我们找到了原因,我们通过-Xmx为JVM分配了比系统上的物理内存更多的内存.这导致垃圾收集期间的分页,这会导致垃圾收集.

此外,我们有多个VM在同一台物理机器上运行.确保没有为所有VM分配比服务器上的物理内存更多的内存.

有关详细信息,请参阅调整内存管理系统,设置堆大小(我的重点)部分:

命令行选项:-Xms:-Xmx:

堆大小会影响分配速度,垃圾收集频率和垃圾收集时间.一小堆将很快变满,必须更频繁地进行垃圾收集.它也容易碎片化,使对象分配更慢.大堆在垃圾收集时间中引入了轻微的开销.必须将大于系统中可用物理内存的堆分页到磁盘,这会导致访问时间过长甚至应用程序冻结,尤其是在垃圾回收期间.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有