如何通过java进程查找cpu使用率
我想监视一些java应用程序的cpu使用情况。我不想使用像这样的工具 jconsole(JMX)如何通过java进程查找cpu使用率,java,jvm,cpu-usage,Java,Jvm,Cpu Usage,我想监视一些java应用程序的cpu使用情况。我不想使用像这样的工具 jconsole(JMX) 如果有任何方法可以通过java代码进行检查?一种方法是使用 Runtime.getRuntime().exec(command); 然后运行top | grep java命令。使用 目前它报告: 进程表(也可作为树提供),包括pid、ppid、名称、, 命令行、用户、进程大小、常驻进程大小、用户时间、, 和内核时间 正常运行时间 当前进程的pid 总内存和自由内存 完全和自由交换 CPU使用率
如果有任何方法可以通过java代码进行检查?一种方法是使用
Runtime.getRuntime().exec(command);
然后运行top | grep java
命令。使用
目前它报告:
- 进程表(也可作为树提供),包括pid、ppid、名称、, 命令行、用户、进程大小、常驻进程大小、用户时间、, 和内核时间
- 正常运行时间
- 当前进程的pid
- 总内存和自由内存
- 完全和自由交换
- CPU使用率
- CPU频率
- CPU数量
您还可以使用jmx mbeans或使用Runtime.exec()获取PID,并使用该调用平台特定的命令(如ps)。您应该从Java类本身检索MXBean
ThreadMXBean
,并使用方法get*CpuTime()
否则,您可以在Java进程PID上使用良好的oldtop
和grep
如果您足够勇敢,在linux工具
包中还有perf
工具
希望有帮助 实现这一点的方法是使用JMX。您可以像其他任何Java代码一样从Java代码调用JMX。或者您可以在外部使用
ps
或读取/proc/{pid}
(如果您有Linux)。我需要Java进程的cpu使用百分比。如何使用JMX?请检查如何使用getCPUUsage我使用的是CpuTimes.getCPUUsage,但它总是返回1.0putimes ct=monitor.CpuTimes();ct.getCpuUsage(ct)@你有索拉夫的源代码试着调试,我们看一行什么都看不出来。你可以为这个问题开始一个新的问题,并在那里提供你的代码,我相信你会得到答案。