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

标签 java memory-management jar jvm cpu-usage

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

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

最佳答案

您可以使用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工具。这个工具非常有用并显示所有详细信息。

关于java - 分析 Jar 的内存和 CPU 使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098418/

相关文章:

ubuntu - 错误 : Unable to access jarfile when running docker container

java - 强制向下转型

ios - 为什么 ARC 在 popViewController 之后不释放内存

java - 如何以编程方式搜索某个 JAR 中的文件?

linux - 当前页面的 kpagecount 为零

linux - "Cannot allocate memory"尽管免费报告 "available"

java - 解压并重新压缩 jar 后为 "no main manifest attribute"

java - 重新启动不可重新启动的作业的新实例

java - 大量单元测试导致卡住并导致 Binder Transaction 失败

java - Jar 文件位于另一个 jar 错误 NoClassDefFoundError 和 ClassNotFoundException 中