java长时间_什么导致Java中长时间的旋转和同步时间?

本文探讨了Java 8 Update 45中应用线程停止时间过长的问题,特别关注了-XX:+PrintGCApplicationStoppedTime等参数带来的统计数据。作者解析了VM操作(如无vm操作)和旋转同步时间的重要性,并寻求解决高延迟的原因和优化建议,重点在于避免同步过度和排查代码瓶颈。
摘要由CSDN通过智能技术生成

Java 8 Update 45中,将这些选项添加到java调用中:

-XX:+PrintGCApplicationStoppedTime

-XX:+PrintSafepointStatistics

-XX:PrintSafepointStatisticsCount=1

向我显示如下这些统计资料:

vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count

3679.229: no vm operation [ 72 1 2 ] [ 6016 0 6016 0 0 ] 1

2015-05-22T11:25:27.519+0200: Total time for which application threads were stopped: 6.0168551 seconds,Stopping threads took: 6.0164099 seconds

这里的问题是停止线程的时间很长.在这个例子中,这是6秒,这对我们的应用程序来说已经是一个问题了,但是在一个实例中,我已经看到了更多的时间,但是在一个实例中(没有完整的日志记录))几乎要一分钟.

VM操作(这里:无vm操作)不同.我也看过,例如RevokeBias,G1IncCollectionPause或GCG_Operation.此外,page_trap_count似乎是无关紧要的.我已经看到了0的例子,其他的是2,但是一致的是,时间总是反映在旋转和同步的值中.

我正在寻找对这些时间价值旋转和同步的深入解释,但是我主要感兴趣的是为什么会发生这种情况,以及我能做什么.我在配置中没有意识到任何“邪恶”.机器上有很多无聊的内核和未使用的内存,我们运行纯Java(没有JNI),我们不知道我们的代码中有任何过多的同步.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值