JVM 内存诊断

1、jmap命令

# 显示堆内存的配置(初始/最大大小、各代内存分配)和实时使用情况。
jmap -heap <pid>

查看实时的堆内存占用情况

2、jconsole

  • 内存监控
    • 实时查看堆内存(Heap)和非堆内存(Non-Heap)的使用情况,包括 Eden 区、Survivor 区、老年代(Old Gen)的详细数据。
    • 监控垃圾回收(GC)频率和耗时,手动触发垃圾回收。
  • 线程监控
    • 显示所有线程的状态(如运行、等待、阻塞等),分析线程数和线程阻塞问题。
    • 生成线程快照(Thread Dump),帮助诊断死锁或线程资源争用。
  • 类加载监控
    • 统计已加载和卸载的类数量,分析类加载器的内存占用。
  • JVM 概览
    • 显示 CPU 使用率、文件描述符数、JVM 参数等基本信息。
  • MBeans 管理
    • 通过 MBeans(Managed Beans)接口管理应用程序的自定义监控指标和配置参数。

3、jvisualvm

位置:在jdk/bin目录下(jdk 9 以后不再集成,需单独下载)

查看堆内存占用的具体情况:连接进程 -> 监视 -> 堆 Dump -> 概要 -> 检查 -> 查找

This article was updated on