有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

获取Java应用程序的CPU和内存使用情况的Java API

我需要一个API来获取CPU&;java中当前进程或应用程序的内存使用情况

我有一个API来获取整个系统的CPU使用率,但我需要它用于特定的进程(getSystemCpuLoadofOperatingSystemMXBean接口)

提前谢谢


共 (3) 个答案

  1. # 1 楼答案

    如果使用不同的OperatingSystemMXBean,则可以获取该数据

    检查导入的包:com。太阳经营操作系统emmxbean

     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运行时中

  2. # 2 楼答案

    有好消息也有坏消息。坏消息是,使用纯Java无法以编程方式查询CPU使用情况。这方面根本没有API。建议的替代方案可能使用运行时。exec()来确定JVM的进程ID(PID),调用一个外部的、特定于平台的命令,如ps,并为感兴趣的PID解析其输出。但是,这种方法充其量也是脆弱的

    然而,好消息是,一个可靠的解决方案可以通过跳出Java并编写一些C代码行来实现,这些代码行通过Java本机接口(JavaNativeInterface,JNI)与Java应用程序集成

  3. # 3 楼答案

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

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

    jstat-gcutil[在此处插入pid]将以容量的百分比表示每一代的利用率。有助于获得使用情况的概览