`
小混蛋
  • 浏览: 21204 次
社区版块
存档分类
最新评论

jmap 使用

 
阅读更多
jdk1.6+支持 jmap

》jps
8176 Commander
6496 Jps
3604 RemoteTestRunner
5260

>>jmap -histo 3604>d:\out.txt






简单的科普一下吧

windows下的使用方法
命令行输入tasklist找到要检测的java进程的pid
(linux下直接ps -ax找到进程的pid)

如果把jdk的bin配到path里边的话
直接输入
jmap -histo pid > E:\output.txt

就可以把得到的内容到E:\output.txt了,

打开后会发现内容格式是类似这样的:


num   #instances    #bytes  class name
--------------------------------------
  1:    427398    14458448  [I
  2:    178798     6830216  [C
  3:     50278     6668512  <constMethodKlass>
  4:    179924     4318176  java.lang.String
  5:     50278     4026648  <methodKlass>
  6:     15244     3894200  [B
  7:     47809     1773776  [Ljava.lang.Object;
...
...
...
Total  1645187    81806088

他的输出是按照总占用内存排序的
num是排序

#instance是对象的实例个数

#bytes是总占用的字节数

class name对应的就是Class文件里的class的标识
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前边有[代表数组,[I 就相当于int[]

对象用[L+类名表示

具体可以参考JVM的规范

有几个方法可以用

1、通过#instance和#bytes可以得到每个对象的占用内存平均值

注意这个只是对象本身占用的内存
比如你有个类
A{
        int i;
        B b;
        public A(){
                b = new B()
        }
}
则A a = new A();
a实例占用内存的字节数为16字节(int 4字节+B引用 4字节+对象本身8字节)
不包含内部引用b的实例的内存占用字节数

2、可以通过对#instance或者#bytes进行排序,观察每个对象的数目
对程序中生成的实例过多或者内存占用过多的对象进行优化或者找到内存泄漏的地方
分享到:
评论

相关推荐

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

    【JVM信息jmap使用的基本方法教程】 JVM(Java Virtual Machine)是Java程序运行的基础,它负责解析字节码并执行程序。为了优化JVM的性能,开发人员需要掌握一系列工具,其中就包括jmap。jmap是JDK自带的一个命令行...

    java使用JMAP定位代码内存泄漏在哪

    本文将详细介绍如何使用JMAP工具来定位Java代码中的内存泄漏问题。 首先,理解内存泄漏的概念:内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,一次小的内存泄漏可能并不明显,但随着时间的推移,这些未...

    Kubernetes应用java程序无法使用jmap,jstack的解决方案.docx

    Kubernetes 应用 Java 程序无法使用 jmap, jstack 的解决方案 背景: 在 Kubernetes 环境中,运行 Java 程序时,无法使用 jmap 和 jstack 命令进行性能分析和诊断。这种情况下,无法获取 Java 进程的 pid,导致无法...

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...

    jmap Eclipse内存分析工具.rar

    本篇文章将详细介绍`jmap`和MAT的使用及其在内存分析中的作用。 首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它允许开发者查看堆内存的详细信息,包括堆的大小、分配情况以及对象的详细统计。`jmap`的一些...

    JMAP的JavaScript客户端JMAP-JS.zip

    JMAP-JS 是 JMAP 邮件,联系人和日历模型的 JavaScript 实现,是 JMAP 的 JavaScript 客户端。 标签:JMAPJS

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

    ### 使用jmap分析Java程序性能问题 在Java开发与维护过程中,经常遇到与内存相关的性能问题及故障。这些问题包括但不限于内存泄漏、频繁的垃圾回收、内存溢出等,它们不仅影响程序的稳定运行,还可能导致服务中断。...

    JMAP代理服务器jmap-perl.zip

    jmap-perl 是 JMAP 代理服务器的 Perl 实现,Perl JMAP 后端可以与 IMAP 和 SMTP 服务器通许,允许在邮件系统上替换 JMAP 接口。为了高效,初始化实现要求所有服务器支持 CONDSTORE 扩展(RFC4551/FRC7162)。提供一个...

    jmap、jstack、jstat组合使用定位jvm问题.txt

    jmap、jstack、jstat组合使用定位jvm问题

    Java性能监控与调优Demo,主要学习各种JDK监控工具以及jvm调优-monitor_tuning_Demo.zip

    `jhat`是配合jmap使用的,用于分析堆转储文件。`jinfo`用于查看或修改进程的JVM配置信息。`jstack`用于生成线程堆栈跟踪,帮助我们定位死锁和阻塞问题。`jcmd`是Java 7引入的命令行工具,提供了多种JVM诊断命令。 ...

    OpenJdk-7.zip

    9. **jhat**:Java堆分析工具,配合jmap使用,用于诊断内存泄漏等问题。 10. **jstack**:线程堆栈跟踪工具,用于查看Java应用程序的线程状态。 OpenJDK-7与Oracle JDK在功能上基本一致,但OpenJDK是开放源代码的...

    JSON邮件访问协议JMAP.zip

    JMAP 全称是 JSON 邮件访问协议。新基于 JSON 的 API 用于实现与邮件服务器之间的邮件同步,可用于替换 IMAP。如果服务器支持 IMAP ,很容易就可以扩展对 JMAP 的支持。 标签:JMAP

    JVM内存管理学习笔记

    4. jhat:配合jmap使用,分析堆转储文件,找出内存泄漏等问题。 5. VisualVM:集成了多种JDK工具,提供全面的性能分析功能。 总结,JVM内存管理是Java开发者必备的知识,理解其内存结构和垃圾收集机制,结合合适的...

    java 虚拟机 内存和栈 分析工具 ha456.rar

    - **jhat**:Java Heap Analysis Tool,配合jmap使用,可以分析heapdump文件,找出内存泄漏等问题。 - **MAT (Memory Analyzer Tool)**:Eclipse提供的一个高级内存分析工具,能够帮助用户分析heapdump,定位内存...

    jdk-8u111-linux-x64.tar.gz

    - **jhat**:Java堆分析工具,配合jmap使用,分析内存转储文件。 - **jstack**:生成线程堆栈跟踪,用于调试多线程问题。 - **java**:Java虚拟机,执行Java程序的入口。 了解这些基础后,开发者可以根据具体需求...

    jmap工具~MA.zip

    本文将深入探讨jmap工具的使用以及它在解决实际问题中的应用。 jmap,全称Java Memory Analyzer Tool,是Sun JDK自带的一个命令行工具,用于分析JVM的内存状态。它能提供堆内存的详细信息,包括对象统计、类加载器...

    JavaScript JMap类定义与使用方法示例

    下面我们将深入探讨JMap类的定义、使用方法以及相关示例。 首先,我们来看JMap类的定义: ```javascript function JMap() { var arr = {}; // 空类,用于存储键值对 // 增加键值对的方法 this.put = function ...

    jmap -dump:format=b,file=heapdump.hprof Pid堆栈文件分析工具

    `jmap`命令是JDK自带的一个强大工具,它能够帮助开发者深入理解Java应用程序的内存使用情况,尤其是堆内存的分配和垃圾回收。本文将详细讲解如何使用`jmap`中的`-dump:format=b,file=heapdump.hprof`选项来生成堆栈...

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    2. **jmap**: 这个命令用于获取Java进程的内存使用情况。例如,`jmap -heap [进程ID]` 可以显示堆内存的详细信息,包括eden区、survivor区和old区的使用情况。`jmap -histo [进程ID]` 可以按类型统计对象数量和占用...

Global site tag (gtag.js) - Google Analytics