`
44424742
  • 浏览: 232403 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

推荐工具jmap

阅读更多

用这个工具查到了内存浪费的地方

简单的科普一下吧

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进行排序,观察每个对象的数目
对程序中生成的实例过多或者内存占用过多的对象进行优化或者找到内存泄漏的地方

分享到:
评论

相关推荐

    jmap Eclipse内存分析工具.rar

    **jmap Eclipse内存分析工具详解** 在Java开发中,内存管理是至关重要的,尤其是在大型应用或者长时间运行的服务中,内存泄漏可能导致系统性能下降甚至崩溃。为了有效地检测和诊断内存问题,Oracle提供了`jmap`...

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

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

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

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

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

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

    jmap工具~MA.zip

    《深入解析Java jmap工具与内存分析》 在Java开发中,内存管理和性能优化是至关重要的环节。"jmap"工具作为Java虚拟机(JVM)的一部分,为开发者提供了强大的内存分析功能,尤其是在处理内存溢出和理解Java运行时...

    jmap+EclipseMAT:排查内存泄漏的好工具.pdf

    Jmap+EclipseMAT 排查内存泄漏的好工具 Jmap 和 EclipseMAT 是两种非常有用的工具,用于排查 Java 应用程序中的内存泄漏问题。下面是对这两个工具的详细介绍和使用方法。 Jmap Jmap 是一个命令行工具,用于输出 ...

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    本文将介绍五种JVM监控工具:jstack、jconsole、jinfo、jmap和jdb。 jstack jstack是一款命令行工具,用于生成Java应用程序的崩溃dump文件的信息。该工具可以attach到正在运行的Java应用程序中,查看当前运行的...

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

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

    IBM内存分析工具(java)

    本文将详细介绍IBM内存分析工具的功能、使用方法以及如何结合jmap命令来获取内存文件。 1. **IBM内存分析工具概述** IBM内存分析工具(IBM Memory Analyzer,简称MAT)是一款强大的、免费的诊断工具,适用于所有...

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

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

    jmap jstat等命令介绍

    `jmap`、`jstat`等命令是Java开发和运维人员的必备工具,它们提供了对JVM(Java虚拟机)内部状态的深入洞察,帮助我们了解内存使用、垃圾收集、线程状态等情况。下面将详细介绍这些命令及其在监控Tomcat内存使用情况...

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

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

    自动化测试工具

    《自动化测试工具——深入解析JMap 1.4》 在信息技术领域,自动化测试是提升软件质量、缩短开发周期和减少人力成本的关键手段。而JMap作为一款强大的自动化测试工具,为开发者提供了一种高效、精确的方式来分析和...

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

    本篇将重点介绍几种常用的JVM监控工具,包括jstack、jconsole、jinfo、jmap以及jdb和jstat。 首先,`jstack`是一个用于打印Java线程堆栈跟踪的工具。当应用出现死锁或者线程阻塞时,jstack可以帮助我们查看各个线程...

    C++入门经典(第三版)_jmap

    “jmap”通常用于Java环境下的内存映射工具,这里可能是指书中涉及了类似的功能或概念,但更具体的上下文信息不足,难以确定其确切含义。 - **描述**:“C++入门经典(第三版),比较经典的入门书籍,值得拥有”:...

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

    jmap是JDK自带的一个命令行工具,用于收集和分析JVM内存信息,主要包括堆内存、类加载器统计和对象 finalize 队列等。本文将详细介绍jmap的使用方法。 ### 前言 在Java性能调优过程中,开发者通常会使用各种开源...

    tda分析线程dump的工具

    "tda分析线程dump的工具" 正是这样一个专门用于处理线程Dump的实用工具,它简化了分析过程,使得排查性能问题更加高效。 这个工具包含两个主要部分:bin 目录和 tda.jar 文件。bin 目录可能包含了运行该工具所需要...

    IBM堆内存对象分析工具

    基本上出问题就是 df、free、top,然后依次 使用jstack、jmap,具体问题具体分析。 IBM出的一款堆内存对象分析ha(heap analyser)工具,可以用来分析websphere生成的内存转储phd格式文件。 使用方法 1.下载ha457.jar ...

Global site tag (gtag.js) - Google Analytics