加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

即使有足够的java内存 – 为什么重复java垃圾收集

发布时间:2020-12-14 06:03:21 所属栏目:Java 来源:网络整理
导读:我们的 java进程占用了大量的CPU,并且日志显示它经常执行GC,即使已使用的内存大约为5GB(取自JMX控制台),而Min和Max内存为10GB. 我们的JVM args是:JVM_GC =“ – verbose:gc -Xnoclassgc -XX:PrintGCDetails -XX:UseParNewGC -XX:NewSize = 3GB -XX:Par
我们的 java进程占用了大量的CPU,并且日志显示它经常执行GC,即使已使用的内存大约为5GB(取自JMX控制台),而Min和Max内存为10GB.

我们的JVM args是:JVM_GC =“ – verbose:gc -Xnoclassgc -XX:PrintGCDetails -XX:UseParNewGC -XX:NewSize = 3GB -XX:ParallelGCThreads = 8 -XX:MaxTenuringThreshold = 15 -XX:UseConcMarkSweepGC”

和MinHeap = MaxHeap = 10GB

什么可能触发GC?为什么它经常发生并且太快?
除了通过JMX获取一些设置之外,我们无法将任何类型的分析工具连接为其生产框…
谢谢
….. GC日志….

@ 2011-07-20 02:10:46 [Full GC(System)[CMS:3333423K-> 4019122K(7340032K),13.4979250 secs] 4876606K-> 4019122K(10171200K),[CMS Perm:21656K-> 21608K (21824K)],13.4980930秒
s] [时间:用户= 12.99 sys = 0.50,真实= 13.50秒]
[GC [1 CMS-initial-mark:4019122K(7340032K)] 4041525K(10171200K),0.0009110 secs] [次:用户= 0.00 sys = 0.00,real = 0.00 secs] @ 2011-07-20 02:11:10 [ CMS并发标记:10.322 / 10.753秒] [时间:用户= 21.55 sys = 0.22,实际= 10.75秒]
[CMS-concurrent-preclean:0.035 / 0.036 secs] [次:用户= 0.04 sys = 0.00,real = 0.04 secs] @ 2011-07-20 02:11:15
CMS:因时间而中止预扫[CMS-concurrent-abortable-preclean:1.083 / 5.063 secs] [次:用户= 1.08 sys = 0.00,real = 5.06 secs]
[GC [YG占有率:282204 K(2831168 K)] [重新扫描(平行),0.0402030秒] [弱参考处理,0.0010550秒] [1 CMS-备注:4019122K(7340032K)] 4301
326K(10171200K),0.0413630秒] [次:用户= 0.07 sys = 0.01,real = 0.04 secs] @ 2011-07-20 02:11:16
[CMS-concurrent-sweep:2.627 / 2.627 secs] [时间:用户= 2.63 sys = 0.00,真实= 2.63秒]
[CMS-concurrent-reset:0.039 / 0.039 secs] [次:用户= 0.04 sys = 0.00,real = 0.04 secs] @ 2011-07-20 02:11:20
[GC [1 CMS-initial-mark:4019034K(7340032K)] 4301238K(10171200K),0.0308450 secs] [次:用户= 0.03 sys = 0.00,real = 0.03 secs] @ 2011-07-20 02:11:30
[CMS-concurrent-mark:10.304 / 10.307 secs] [时间:用户= 20.48 sys = 0.11,真实= 10.31秒]
[CMS-concurrent-preclean:0.018 / 0.019 secs] [次:用户= 0.02 sys = 0.00,real = 0.01 secs] @ 2011-07-20 02:11:35
CMS:因时间而中止预扫[CMS-并发 – 流产 – 预清洁:1.043 / 5.048秒]时间:用户= 1.03 sys = 0.00,实际= 5.05秒]
[GC [YG占有率:282204 K(2831168 K)] [重新扫描(平行),0.0419560秒] [弱参考处理,0.0010880秒] [1 CMS-备注:4019034K(7340032K)] 4301
238K(10171200K),0.0431480秒] [时间:用户= 0.07 sys = 0.01,实际= 0.05秒] @ 2011-07-20 02:11:38
[CMS-concurrent-sweep:2.622 / 2.622 secs] [时间:用户= 2.63 sys = 0.00,真实= 2.62秒]
[CMS-concurrent-reset:0.039 / 0.039 secs] [次:用户= 0.04 sys = 0.00,real = 0.04 secs]

解决方法

尝试使用UseCMSInitiatingOccupancyOnly& CMSInitiatingOccupancyFraction标志.使用这些标志启动CMS集合将根据占用率触发. 此外,可能有增加终身代的规模的意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读