运行Java jar应用程序时,准确基准化CPU和内存使用率的最佳方法是什么?我目前正在使用VisualVM,但我需要一个插件或可以连接到pom或项目的东西。
其他:在像Spring这样的无服务器应用中怎么样?
答案 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工具。该工具非常有用,可以显示所有详细信息。