有关GC每40秒运行一次的思考

用JProfiler测试项目的性能,发现GC大概每40秒就运行一次,不知道是好是坏!在网上搜索并和朋友讨论:
HeyFamily168(158865140) 16:51:20
垃圾回收由虚拟机自己的机制进行调度,不同的jdk实现的算法不同。程序无法控制它什么时候进行回收,只能建议。进行垃圾回收一般在系统资源比较空闲的时候。
江城月(345622936) 16:52:58
这个跟CPU空闲什么关系
HeyFamily168(158865140) 16:55:31
如果你的CPU一直运行在100%的时候,它忙自己的活都没有资源,那有空闲帮你回收垃圾,
江城月(345622936) 16:56:10
你这个是极端的假设
江城月(345622936) 16:56:23
再说当你new的时候不需要cpu吗?
广州---三寿<qxpidt@163.com> 16:56:25
我觉得有道理!
江城月(345622936) 16:56:54
哪个有道理
广州---三寿<qxpidt@163.com> 16:58:22
168的有道理!

江城月(345622936) 16:59:02
刚找到一个解释,感觉很不错
江城月(345622936) 16:59:13

经验之谈:
1 Server JVM 最好将 -Xms -Xmx 设为相同值。为了优化 GC ,最好让 -Xmn 值约等于 -Xmx 1/3[2]
2 .一个 GUI 程序最好是每 10 20 秒间运行一次 GC ,每次在半秒之内完成 [2]
HeyFamily168(158865140) 16:59:13
这个结论是是搞笑点。
不过确定是存在因为系统繁忙而导致无法回收的情况。
HeyFamily168(158865140) 16:59:27
其实我不知道你那个测试,想问什么问题
江城月(345622936) 16:59:39
10到20秒运行一次GC
江城月(345622936) 17:00:14
原因是这个
江城月(345622936) 17:00:16
注意:
1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作。
江城月(345622936) 17:00:49
GC运行时,所有的用户线程将暂停

要是暂停时间太久,那看着像什么,呵呵

HeyFamily168(158865140) 17:03:53
要是游戏引擎的话,给它停这么一停,按你说的还要10~~20s停一下,就算是0.x~1s之间,你就会知道痛苦。呵呵。。。
江城月(345622936) 17:04:18
对的
好学份子<twt46955662@tom.com> 17:04:35
听你们谈这些,长学问哪
江城月(345622936) 17:04:47
所以说我的40秒来一次GC,应该还好
江城月(345622936) 17:05:05
毕竟现在的硬件什么的也不错

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值