from
http://www.cnblogs.com/0616--ataozhijia/p/4136312.html
转载:http://blog.csdn.net/kevin_luan/article/details/8447896
http://liulinxia02.blog.163.com/blog/static/26868772009111861834942/
http://zhumeng8337797.blog.163.com/blog/static/100768914201242410583187/
其中jmap是java自带的工具
查看整个JVM内存状态
jmap -heap [pid]
要注意的是在使用CMS GC 情况下,jmap -heap的执行有可能会导致JAVA 进程挂起
查看JVM堆中对象详细占用情况
jmap -histo [pid]
导出整个JVM 中内存信息
jmap -dump:format=b,file=文件名 [pid]
jhat是sun 1.6及以上版本中自带的一个用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中对象的内存占用情况
jhat -J-Xmx1024M [file]
执行后等待console 中输入start HTTP server on port 7000 即可使用浏览器访问 IP:7000
eclipse Memory Analyzer
Eclipse 提供的一个用于分析JVM 堆Dump文件的插件。借助这个插件可查看对象的内存占用状况,引用关系,分析内存泄露等。
http://www.eclipse.org/mat/
kill -3 [pid]
在Linux 上找到Java所在的进程号,然后执行以上命令,线程的相关信息就输出到console
jstack
jstack 是sun JDK 自带的工具,通过该工具可以看到JVM 中线程的运行状况,包括锁等待,线程是否在运行
执行 jstack [pid] ,线程的所有堆栈信息
"http-8080-10" daemon prio=10 tid=x0a949bb60 nid=0x884 waiting for monitor entry [...]
"http-8080-10" 这个线程处于等待状态。 waiting for monitor entry 如果在连续几次输出线程堆栈信息都存在于同一个或多个线程上时,则说明系统中有锁竞争激烈,死锁,或锁饿死的想象。
“http-8080-11” daemon prio=10 tix=xxx nid=xxx in object.wait() [...]
java.lang.Thread.State:waiting (on object monitor)
该表示http-8080-11的线程处于对象的Wait 上,等待其他线程的唤醒,这也是线程池的常见用法。
“Low Memory Detector”daemon prio=10 tix=xx nid=xxx runnable [...] java.lang.Thread.State:runnable
表示“Low Memory Detector” 的线程处于Runable状态,等待获取CPU的使用权.
参考:http://zhumeng8337797.blog.163.com/blog/static/100768914201242410583187/
一.Java VisualVM 概述
对于使用命令行远程监控jvm 太麻烦 。 在jdk1.6 中 Oracle 提供了一个新的可视化的。 JVM 监控工具 Java VisualVM 。jvisualvm.exe 在JDK 的 bin 目录下。
双击启动 Java VisualVM 后可以看到窗口左侧 “应用程序 ”栏中有“ 本地 ”、“远程 ” 、“快照 ”三个项目。
“本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启 动 Java VisualVM 即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用 的 CPU 、 Heap 、 PermGen 、类、线程的 统计信息。
“远程” 项下列出的远程主机上的 Java 程序的资源占用情况,但需要在远程主机上运行 jstatd 守护程序
VisualVM分为 3 类, 本地 它会自动侦测到,并显示出来
双击Local 下的任一节点,看到右边的变化 ,你可以监控 CPU ,内存,类,线程等运行状况,实时监控服务器性能。
右键 VisualVM我们可以看到 Thread Dump, Heap Dump
做 Thread Dump 很快,马上就可以看到结果
Heap Dump要稍花费一些时间(可以看到当前 heap 里对象的数量及占用的比例,做 OOM 很好用)
对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用 VisualVM 远程监控。
相关推荐
本文将详细讲解如何使用`jmap`中的`-dump:format=b,file=heapdump.hprof`选项来生成堆栈文件,并利用MAT(Memory Analyzer Tool)进行分析。 首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它可以提供关于JVM...
1. 导入dump文件:打开MAT,选择`File` -> `Open Heap Dump`,然后选择之前使用jmap生成的dump文件。 2. 分析报告:生成并查看Leak Suspects报告,以及其他感兴趣的报告。 3. 查看Dominator Tree:理解对象的内存...
1. **获取dump文件**:当JVM出现问题时,通过JVM的命令行选项(如`-XX:+HeapDumpOnOutOfMemoryError`)或者使用如`jmap`命令生成heap dump文件。 2. **安装HeadAnalyzer**:解压`ha414.jar`文件,这是一个包含...
1. **生成堆转储(Heap Dump)**: 使用`jmap -dump`命令,可以在运行时将Java堆的完整状态导出为一个二进制文件,通常以`.hprof`为扩展名。 2. **堆统计信息**: `jmap -histo`可以打印出堆中对象的数量和大小的直方...
分析heapdump文件,我们可以使用各种工具,如Eclipse Memory Analyzer Tool (MAT)、VisualVM等。MAT是一款强大的内存分析工具,它可以显示内存概览、查找内存泄漏、分析对象生命周期等。在MAT中,你可以通过"Leak ...
1. **获取.dump文件**:当应用程序出现内存问题时,使用JVM的`jmap`命令或应用工具(如VisualVM)生成.hprof文件。 2. **导入到MAT**:解压缩`memoryanalyzer_v1.5.0.rar`,运行MAT,导入生成的.hprof文件。 3. **...
本篇文章将详细讲解如何使用`javacore`和`heapdump`分析工具,特别是针对Websphere环境的`ha`和`jca`工具,以及如何使用JDK1.6来打开和解析这些文件。 首先,`javacore`文件是Java虚拟机(JVM)在遇到特定事件(如...
对于分析工作,开发者或系统管理员可能需要使用IBM提供的专门工具,例如`jconsole`、`jmap`、`jstack` 或 `VisualVM` 等,它们可以帮助解读dump文件,呈现详细的内存、线程和类加载器信息。此外,IBM的SupportPac...
在 Kubernetes 环境中,运行 Java 程序时,无法使用 jmap 和 jstack 命令进行性能分析和诊断。这种情况下,无法获取 Java 进程的 pid,导致无法使用 jmap 和 jstack 命令。 解决方案: 1. 了解 Linux 特殊进程 在 ...
当遇到内存溢出问题时,通常会先使用`jmap`生成dump文件,然后使用专门的分析工具,如Eclipse Memory Analyzer (MAT)、VisualVM等对dump文件进行解析。这些工具能帮助我们找到内存泄漏的根源,识别长期存活的大对象...
JavaDump的使用者通常包括实施、测试和开发人员,他们需要生成和分析JavaDump,以快速诊断和解决Java程序中的各种问题。无论是开发阶段的调试、还是生产环境中的性能优化,JavaDump都是一个不可多得的工具。 生成...
线程 Dump 分析是 IT 系统性能优化中不可或缺的一部分,尤其在 Java 应用程序中,当系统出现响应慢或者卡死等异常情况时,通过获取和分析线程 Dump 文件,我们可以找出导致问题的线程,定位内存泄漏、死锁等问题。...
使用`-dump`选项,jmap可以将当前的堆内存状态导出为一个文件。这种快照文件通常会被其他工具如MAT(Memory Analyzer Tool)或VisualVM用来进行更深入的分析。这种方法对于解决复杂的内存问题特别有效,因为它允许在...
本文将详细介绍如何使用MAT来分析dump文件,以揭示潜在的内存问题。 MemoryAnalyzer,简称MAT,是由Eclipse基金会开发的一款免费开源工具,专为Java开发者设计,用于检测和诊断Java应用中的内存泄漏。MAT提供了丰富...
3. 使用 EclipseMAT 工具来分析输出的堆 heap 信息,例如:File -> Load Heap Dump -> 选择输出的堆 heap 文件。 4. 在 EclipseMAT 中,可以看到详细的内存使用情况,包括对象的数量、大小、引用关系等信息。 5. ...
使用`-dump`选项可以将堆内存转储为hprof二进制格式文件,这对于离线分析非常有用: ``` jmap -dump:live,format=b,file=heap.bin ``` 其中`live`表示只导出活动对象,`format=b`指定二进制格式,`file=heap....
1. **生成dump文件**:当应用出现性能问题时,可以使用JDK自带的`jmap`命令或者操作系统的工具生成堆转储文件。 2. **打开dumpAnalyzer**:导入生成的dump文件到dumpAnalyzer中,启动分析。 3. **分析与诊断**:...
基本上出问题就是 df、free、top,然后依次 使用jstack、jmap,具体问题具体分析。 IBM出的一款堆内存对象分析ha(heap analyser)工具,可以用来分析websphere生成的内存转储phd格式文件。 使用方法 1.下载ha457.jar ...
jhat 主要用来分析堆dump文件。语法格式如下:jhat [options] [dumpfile]。指令行参数选项解释如下: * -J options 传递给 JVM 的参数 * -port 端口号 例如:jhat -port 9999 dump.dat 五、jstat jstat 主要用来...