我正在尝试编写一个程序,该程序使用JMX查找JVM在该时刻用于GC活动的CPU百分比(或者对于一小部分时间,比如说1秒),类似于JVisualVM。使用JMX我能够在lasdt GC循环开始和结束的时候找到GarbageCollectionTime。但还没有找到将这些信息转换为GC的CPU利用率的方法。使用JMX的GC正在使用的CPU百分比
回答
那么,你将无法以编程方式找到答案。 GC将使用100%的可用CPU。真正的问题是“有多少CPU可用?”
串行GC(
-XX:+UseSerialGC
)将使用一个 CPU。并行收集器(
-XX:+UseParallelGC
,-XX:+UseParallelOldGC
和-XX:+UseParNewGC
)将使用CPU的你给数(-XX:ParallelGCThreads=N
),或全部,如果你不指定一个数字的大多是同时发生的收藏家(
-XX:+UseConcMarkSweepGC
和-XX:+UseG1GC
)将使用CPU的数量,您给(-XX:ConcGCThreads=N
),或一半的人,如果你不指定一个数字
需要注意的是,与CMS和G1,你可以设定一些目标到GC与下列选项:
-XX:MaxGCPauseMillis=X
将设置以毫秒为单位的最大停顿时间目标:
:二GC周期-XX:GCPauseIntervalMillis=<X>
将设置http://jvm-options.tech.xebia.fr/
源之间的最小时间间隔的目标
您可以在this page上找到解析iCMS日志的提示,并在this page上提供有关GC调整的提示。
希望有帮助!
我的意思是让类似,你可以找到使用VisualVM的什么信息。在给定的时间点,GC使用一个完整的核心(或更多),或者当我说的百分比超过一段时间,比如在最近的1秒内说的GC时间的百分比时,GC就不会使用它。 – Ritwaj 2013-05-10 10:06:29
串行和并行GC是STW,并在内存池已满时启动,因此您无法限制它们。你可以设定目标为CMS和G1,我已经编辑了我的答案和更多信息。 – 2013-05-11 10:47:00
很遗憾,此信息不可通过JMX(恕我直言,VisualVM显示屏显示错误的GC CPU时间)。
您可以使用jstat -gc <pid>
收集您的JVM的车库集合CPU使用情况。
jstat -gc <pid> 1s
会产生这样的
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
6528.0 6528.0 6523.9 6528.0 52480.0 51600.0 2097152.0 1697279.8 21248.0 5647.8 39 6.873 5 11.685 18.559
6528.0 6528.0 0.0 6528.0 52480.0 13355.5 2097152.0 1794839.9 21248.0 5649.8 41 7.322 5 11.685 19.008
6528.0 6528.0 0.0 6528.0 52480.0 27790.8 2097152.0 1884439.9 21248.0 5649.8 43 7.646 5 11.685 19.332
6528.0 6528.0 0.0 6528.0 52480.0 50942.9 2097152.0 1974055.9 21248.0 5649.8 46 7.969 5 11.685 19.654
- YGCT - CPU时间以来的JVM
- FGCT开始通过微小的收藏消耗秒 - CPU时间秒自JVM启动消耗的未成年人集合
- GCT - 以上
也许总和可以帮助你(有看GC
列)
JvmTop 0.3 alpha (expect bugs) amd64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
- 1. Tomcat的JMX CPU使用率
- 2. 如何获得在InfluxDB收集的CPU使用百分比
- 3. 整体CPU使用率和在Linux的百分比内存(RAM)使用/ Ubuntu的
- 4. HTA监控CPU使用率与WMI的百分比 - 不准确
- 5. C#:在自定义百分比处创建CPU使用率
- 6. 使用批处理脚本获取CPU利用率百分比
- 7. 在Perfmon中找到的CPU百分比
- 8. 码头CPU百分比
- 9. 如何使用SIGAR库正确获取使用的CPU的每个进程的百分比
- 10. 页首命令:在过程中为什么CPU%,比整体CPU使用率较高的百分比
- 11. libgdx使用图像的百分比
- 12. 的Android - ConstraintLayout使用百分比梦诗
- 13. 使用Ajax显示php的百分比
- 14. 在Javascript中使用百分比值
- 15. Pyplot:在x轴上使用百分比
- 16. 在c中使用百分比#
- 17. 在PHP中使用百分比
- 18. 在年轻的gen GC中存活的物体的百分比?
- 19. 以内核空间的百分比计算进程的CPU使用率
- 20. 用百分比使用AJAX请求progressbars
- 21. .NET垃圾收集器使用的CPU百分比是否是任何指标?
- 22. 如何在C#中为每个正在运行的进程获取cpu使用百分比
- 23. 测量“在GC中花费的时间百分比”
- 24. 在Perf Mon中看到高“GC时间百分比”的原因
- 25. 理想的CPU百分比为Android应用程序
- 26. Windows 7中每个进程的CPU利用率百分比
- 27. 泊坞窗容器CPU百分比
- 28. 如果不允许使用百分比,如何使用android支持百分比使用xml resoureces value?
- 29. 计算百分比总使用rowPercents
- 30. 百分比使用情况如何?
JVisualVM使用jstat API,而不是JMX,显示CPU利用率图表 – 2013-05-12 07:11:04