我想监控某些Java应用程序的CPU使用情况。我不想使用这样的工具jconsole (JMX)
是否有任何方法可以通过Java代码进行检查?
使用 JavaSysMon
目前它报告:
- 工艺表(也可作为树使用),包括 pid、ppid、名称、命令行, 用户, 进程大小, 驻留进程大小, 用户时间,和内核时间。
- 正常运行时间
- 当前进程的 pid
- 总内存和可用内存
- 总隔夜利息和自由掉期
- 中央处理器使用率
- 中央处理器频率
- 处理器数量
你也可以使用 jmx mbeans 或使用 Runtime.exec() 获取 PID,并使用调用特定于平台的命令,如 ps。
一种方法是使用
Runtime.getRuntime().exec(command);
并运行top | grep java
命令。
您应该从 Java 类本身检索 MX Bean ThreadMXBean
并使用 get*CpuTime()
的方法。
否则,您可以在 Java 进程 PID 上使用旧的 top
和 grep。
如果你足够勇敢,linux-tools
包里也有perf
工具。
希望有帮助!