【问题标题】:Profiling a Jar's Memory and CPU Usage分析 Jar 的内存和 CPU 使用情况
【发布时间】:2019-07-18 15:52:27
【问题描述】:

在运行 Java jar 应用程序时,准确地对 CPU 和内存使用情况进行基准测试的最佳方法是什么?我目前正在使用 VisualVM,但如果可能的话,我想要一个插件或可以附加到 pom 或项目的东西。

附加:在像 Spring 这样的无服务器应用程序中怎么样?

【问题讨论】:

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


【解决方案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 工具。这个工具非常有用,可以显示所有细节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多