分析Jar的内存和CPU使用情况

时间:2019-07-18 15:52:27

标签: java memory-management jar jvm cpu-usage

运行Java jar应用程序时,准确基准化CPU和内存使用率的最佳方法是什么?我目前正在使用VisualVM,但我需要一个插件或可以连接到pom或项目的东西。

其他:在像Spring这样的无服务器应用中怎么样?

1 个答案:

答案 0 :(得分:1)

您可以使用Spring Boot Actuator进行监视。添加 spring-boot-starter-actuator 依赖关系,配置application.properties或.yaml文件,您可以通过HTTP请求查看CPU的使用情况。

java还为MXBean提供了此结构。如果需要,可以创建自己的MBean服务器并在jconsole上显示CPU使用情况。

public void exampleCPUUsageWithMXBean() {
    long previousJvmProcessCpuTime = 0;
    long previousJvmUptime = 0;
    com.sun.management.OperatingSystemMXBean prepareOperatingSystemMXBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class);
    java.lang.management.OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
    RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();

    long elapsedProcessCpuTime = prepareOperatingSystemMXBean.getProcessCpuTime() - previousJvmProcessCpuTime;
    // elapsed uptime is in milliseconds
    long elapsedJvmUptime = runtimeMXBean.getUptime() - previousJvmUptime;

    // total jvm uptime on all the available processors
    long totalElapsedJvmUptime = elapsedJvmUptime * operatingSystemMXBean.getAvailableProcessors();

    float cpuUsage = elapsedProcessCpuTime / (totalElapsedJvmUptime * 10000F);

    System.out.println(cpuUsage);

}

注意:我推荐使用Java Mission Control工具。该工具非常有用,可以显示所有详细信息。