Java api获得Cpu&我的java应用程序的内存使用情况

时间:2016-04-15 12:39:26

标签: java cpu-usage heap-memory

需要api才能获得CPU& java中当前进程或应用程序的内存使用情况。 我得到了一个api来获得完整系统的cpu使用,但我需要特定的进程。(getSystemCpuLoad OperatingSystemMXBean接口)

提前致谢

3 个答案:

答案 0 :(得分:6)

如果您使用其他OperatingSystemMXBean,则可以获取该数据。 检查导入的包: com.sun.management.OperatingSystemMXBean

 import java.lang.management.ManagementFactory;
 import com.sun.management.OperatingSystemMXBean;

 public class Test {

 public static void main(String[] args) {
       OperatingSystemMXBean operatingSystemMXBean = 
          (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
       System.out.println(operatingSystemMXBean.getProcessCpuLoad());
 }}

https://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean.html

如果我没弄错的话,这个类包含在rt.jar中,存在于你的java运行时中。

答案 1 :(得分:4)

有好消息和坏消息。坏消息是使用纯Java以编程方式查询CPU使用情况是不可能的。根本就没有API。建议的替代方法可能使用Runtime.exec()来确定JVM的进程ID(PID),调用外部的,特定于平台的命令(如ps),并解析其输出以获取感兴趣的PID。但是,这种方法充其量是脆弱的。

然而,好消息是,可以通过跨越Java并编写一些通过Java Native Interface(JNI)与Java应用程序集成的C代码行来实现可靠的解决方案。

答案 2 :(得分:0)

一旦有了pid,就可以使用jstat -gc [insert-pid-here]查找有关垃圾收集堆行为的统计信息。

jstat -gccapacity [在此处插入-pid-]将显示有关内存池生成和空间功能的信息。

jstat -gcutil [在此处插入-pid-]将显示每一代的利用率,以其容量的百分比表示。有助于快速了解使用情况。