`
小网客
  • 浏览: 1241619 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM性能调试之jmap

    博客分类:
  • Java
 
阅读更多

jmap 的用途是为了展示java进程的内存映射信息,或者堆内存详情

常用的参数如下:

histo

jmap -histo pid 展示class的内存情况

展示的信息为编号,实例数,字节,类名

例如:

jmap -histo:live 2540

 num     #instances         #bytes  class name
----------------------------------------------
   1:         20981         908120  [C
   2:         21015         504360  java.lang.String
   4:          9999         159984  org.learn.util.User
   5:           312          59216  [Ljava.lang.Object;

 

heap

 

jmap -heap pid 展示pid的整体堆信息

如:

 

$ jmap -heap 29030
JVM version is 16.3-b01

using thread-local object allocation.
Parallel GC with 13 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 8436842496 (8046.0MB)
   NewSize          = 5439488 (5.1875MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 88080384 (84.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 87883776 (83.8125MB)
   used     = 31053080 (29.614524841308594MB)
   free     = 56830696 (54.197975158691406MB)
   35.33425782706469% used
From Space:
   capacity = 13828096 (13.1875MB)
   used     = 196608 (0.1875MB)
   free     = 13631488 (13.0MB)
   1.4218009478672986% used
To Space:
   capacity = 16384000 (15.625MB)
   used     = 0 (0.0MB)
   free     = 16384000 (15.625MB)
   0.0% used
PS Old Generation
   capacity = 156172288 (148.9375MB)
   used     = 27098208 (25.842864990234375MB)
   free     = 129074080 (123.09463500976562MB)
   17.35148299805917% used
PS Perm Generation
   capacity = 88080384 (84.0MB)
   used     = 50847592 (48.492042541503906MB)
   free     = 37232792 (35.507957458496094MB)
   57.728622073218936% used

 对应的说明如下:

 

 

Parallel GC with 13 thread(s)   #13个gc线程

Heap Configuration:#堆内存初始化配置
   MinHeapFreeRatio = 40  #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率
   MaxHeapFreeRatio = 70  #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率
   MaxHeapSize      = 8436842496 (8046.0MB)#-XX:MaxHeapSize=设置JVM堆的最大大小
   NewSize          = 5439488 (5.1875MB) #-XX:NewSize=设置JVM堆的‘新生代’的默认大小
   MaxNewSize       = 17592186044415 MB  #-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
   OldSize          = 5439488 (5.1875MB) #-XX:OldSize=设置JVM堆的‘老生代’的大小
   NewRatio         = 2 #-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
   SurvivorRatio    = 8 #-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
   PermSize         = 21757952 (20.75MB) #-XX:PermSize=<value>:设置JVM堆的‘永生代’的初始大小
   MaxPermSize      = 88080384 (84.0MB) #-XX:MaxPermSize=<value>:设置JVM堆的‘永生代’的最大大小

Heap Usage:
PS Young Generation
Eden Space:#Eden区内存分布
   capacity = 87883776 (83.8125MB)
   used     = 31053080 (29.614524841308594MB)
   free     = 56830696 (54.197975158691406MB)
   35.33425782706469% used
From Space:#其中一个Survivor区的内存分布
   capacity = 13828096 (13.1875MB)
   used     = 196608 (0.1875MB)
   free     = 13631488 (13.0MB)
   1.4218009478672986% used
To Space:#另一个Survivor区的内存分布
   capacity = 16384000 (15.625MB)
   used     = 0 (0.0MB)
   free     = 16384000 (15.625MB)
   0.0% used
PS Old Generation#当前的Old区内存分布
   capacity = 156172288 (148.9375MB)
   used     = 27098208 (25.842864990234375MB)
   free     = 129074080 (123.09463500976562MB)
   17.35148299805917% used
PS Perm Generation#当前的 “永生代” 内存分布
   capacity = 88080384 (84.0MB)
   used     = 50847592 (48.492042541503906MB)
   free     = 37232792 (35.507957458496094MB)
   57.728622073218936% used

dump

 

jmap -dump:<dump-options>  pid 把pid的整体堆信息输出

dump-options:

live

format=b

file=<file>

导出的文件可以供分析用,比如jhat或者mat,以便查找内存溢出原因

例如:

jmap -dump:live,format=b,file=tomcat.bin 29030

 

2
2
分享到:
评论

相关推荐

    jvm工具、参数调优&调试技巧

    ### JVM工具、参数调优与调试技巧 #### 一、JVM工具 ##### 1. jps:虚拟机进程状况工具 - **简介**:`jps` 是一个用于显示当前运行的所有Java虚拟机进程(JVMs)的简单工具。它会列出每个JVM的PID(进程ID)以及...

    jvm信息jmap使用的基本方法教程

    - 对于远程JVM,可以通过`jmap [option] [server_id@]&lt;remote server IP or hostname&gt;`来连接远程调试服务器。 - 在某些情况下,如安全限制或JVM不支持时,jmap可能无法正常工作。 ### 结论 jmap作为JVM监控和诊断...

    【转】Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    最后,`jstat`是一个统计JVM性能的命令行工具,它可以提供类加载、垃圾收集、JVM编译器等统计信息。通过`jstat -gc &lt;pid&gt; &lt;interval&gt; &lt;count&gt;`,我们可以定期获取JVM的垃圾回收状况,这对于优化内存配置和识别潜在的...

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    JVM监控工具是Java开发者和运维人员不可或缺的工具,通过这些工具可以监控和诊断Java应用程序的性能和资源使用情况。本文将介绍五种JVM监控工具:jstack、jconsole、jinfo、jmap和jdb。 jstack jstack是一款命令行...

    实战JAVA虚拟机 (JVM故障诊断与性能优化)【含源码】

    《实战JAVA虚拟机 (JVM故障诊断与性能优化)》是一本深度剖析JVM的实践指南,旨在帮助读者掌握JVM的内部工作机制,提升故障排查和性能调优的能力。本书可与周志明的《深入理解JAVA虚拟机》相媲美,提供了丰富的源码...

    2024年java面试题-jvm性能调优面试题第二部分

    ### 2024年Java面试题:JVM性能调优面试题第二部分 #### 内存模型及分区 在Java虚拟机(JVM)中,内存主要被划分为以下几个区域: 1. **堆区(Heap)**:堆区是用于存储初始化的对象、成员变量等数据的地方。所有对象...

    JVM Diagnostics Guide 1.4.2

    这份指南深入解析了如何诊断和解决与JVM性能、内存管理、线程状态等相关问题,帮助开发者优化应用程序的运行效率和稳定性。以下是该指南可能涵盖的一些关键知识点: 1. **JVM概述**:介绍Java虚拟机的原理和作用,...

    使用jmap分析Java程序性能问题

    为了解决这类问题,Java提供了多种工具来辅助开发者进行诊断和调试,其中jmap就是一种非常实用且强大的命令行工具。 #### jmap简介 jmap是Java Development Kit (JDK) 的一部分,用于收集有关Java虚拟机(JVM)运行...

    05-VIP-JVM调优工具详解(预习资料)1

    Jmap命令是JVM调优工具之一,用于查看内存信息。Jmap命令可以生成堆dump文件,用于分析Java应用程序的内存使用情况。例如,使用Jmap命令可以查看实例个数、占用内存大小、类名称等信息。 Jvisualvm是另一个JVM调优...

    JVM与性能优化知识点整理.zip

    在Java开发领域,JVM(Java虚拟机)...通过深入理解这些JVM与性能优化的知识点,开发者可以更好地调试和优化Java应用,确保其高效稳定运行。在实际项目中,应结合具体业务场景灵活运用,持续优化,提升系统的整体性能。

    jvm监控工具介绍

    这些JVM监控工具提供了全面的洞察力,帮助开发者调试问题、优化性能和理解应用程序的行为。熟悉并掌握它们的使用,是Java开发和运维工作中的重要技能。在实际操作中,应根据具体情况选择合适的工具,以实现高效的...

    JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc

    本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们各自的功能、应用场景及如何帮助开发者和运维人员诊断并解决JVM中的复杂问题。 #### 1. jstack —— Java ...

    jvm工具、参数调优&调试技巧.doc

    2. **jstat(Java Virtual Machine Statistics Monitoring tool)**:提供对JVM各种运行时统计数据的实时监控,包括垃圾收集器状态、类装载情况、JVM内存使用等,帮助开发者评估JVM性能。 3. **jinfo...

    JVM笔记(阳哥).zip

    同时,掌握JVM的调试工具,如jstack、jmap、jhat等,可以帮助我们在开发过程中进行问题排查。 总的来说,《JVM笔记(阳哥)》是一份全面、实用的参考资料,无论是初级开发者还是经验丰富的工程师,都能从中获益。...

    jvm内存监控工具使用

    这在调试过程中非常有用,特别是当你需要调整 JVM 的运行时配置而无需重启应用时。例如,可以使用 jinfo 来动态更改 JVM 的 GC 日志输出或调整堆内存大小。 #### jstack:线程堆栈跟踪 jstack 用于获取 Java 进程...

    JVM虚拟机深度讲解

    7. 调试与诊断:了解JVM内部工作原理,有助于进行问题定位和性能调优。例如,使用JStack查看线程堆栈信息,JMap分析内存分配,Jhat进行堆转储分析等。 8. 其他高级特性:JVM还涉及模块系统、反射、动态类型语言支持...

    JVM高级特性与最佳实践

    5. 性能优化:JVM性能优化是保证Java应用高效运行的关键。书中将探讨如何通过JVM参数调整、监控和分析工具使用来优化内存使用、减少垃圾回收开销等。 6. 故障诊断:在Java应用出现问题时,JVM提供了丰富的工具和...

    JAVA命令大全-JVM设置.rar

    3. **性能监控**:`jstat`用于监控JVM的运行时统计信息,`jmap`获取堆内存详细信息或生成堆转储文件,`jhat`分析堆转储文件,`jconsole`和`jvisualvm`提供图形界面进行性能监控和诊断。 4. **JVM诊断**:`jinfo`...

Global site tag (gtag.js) - Google Analytics