摘要:我们经常用到的一工具分析栈内存点击下载分析堆内存。下面我详细介绍一下他们具体是使用方法是自带的一个分析工具,我们可以在的安装目录找到中找到。
Java 内存堆栈分析。我们在分析现网问题时候,经常会遇到一些问题从日志上无法分析的疑难问题。在我们举足无措的时候,我们可以分析一些JVM内存,来看看问题出在哪里了。
我们经常用到的一工具:
分析栈内存(stack):jstack/kill -3 + IBM Thread and Monitor Dump Analyzer for Java (点击下载)
分析堆内存(heap): jmap + jhat。
我们通常是从栈信息入手来进行分析。下面我详细介绍一下他们具体是使用方法:
jstack是java自带的一个分析工具,我们可以在java的安装目录找到:$JAVA_HOME/bin 中找到。
使用方法usage里面的介绍非常明确了,我就不去翻译啦。我这里举个例子:
我们先查询一下java进程,因为jstack要根据java进程号来打印stack信息:
ps -ef|grep java
将stack信息记录到stack.out文件中: jstack -l 31155 > stack.out
我们再用BM Thread and Monitor Dump Analyzer for Java这个工具来分析。
这里可以清晰的看到线程数状态统计,和每个线程的状态。
具体的分析我们可以看看这篇文章。http://jameswxx.iteye.com/blog/1041173
jmap + jhat。这个两个命令也是java自带的,在$JAVA_HOME/bin中你也可以找到他们两个。
基本使用方法是:
先打印heap信息:jmap -dump:live,format=b,file=heap.bin
注意这个文件一般会很大。要看应用服务。
使用jhat分析:jhat -J-mx1024M heap.bin
这个命令会启动一个Server服务,默认的端口是7000。其中-mx是设置最大使用多少内存,如果你要分析的heap文件很大的话,这个值要配置很大,不然会包内存异常的错误。
我们主要看这个两个部分:
Show instance counts for all classes (excluding platform)
Show heap histogram
平台外的对象信息,和对象heap树状图,这个树状图包括所有对象的个数已经占有大小,占用的大小是bytes。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64272.html
面试官:今天要不来聊聊JVM调优相关的吧?面试官:你曾经在生产环境下有过调优JVM的经历吗?候选者:没有面试官:...候选者:嗯...是这样的,我们一般优化系统的思路是这样的候选者:1. 一般来说关系型数据库是先到瓶颈,首先排查是否为数据库的问题候选者:(这个过程中就需要评估自己建的索引是否合理、是否需要引入分布式缓存、是否需要分库分表等等)候选者:2. 然后,我们会考虑是否需要扩容(横向和纵向都...
摘要:点击进入我的博客命令行工具这些工具大多数是类库的一层薄的包装,它们的主要功能代码是在类库中实现的。可视化工具是到目前为止随发布的功能最强大的运行监视和故障处理程序,并且可以预见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。 点击进入我的博客 3.1 JDK命令行工具 showImg(https://segmentfault.com/img/remote/14600000174...
摘要:虚拟机性能监控与故障处理工具详解概述本文参考的是周志明的深入理解虚拟机第四章,为了整理思路,简单记录一下,方便后期查阅。虚拟机堆转储快照分析工具功能用于分析生成的。 虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》 第四章 ,为了整理思路,简单记录一下,方便后期查阅。 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的Vis...
阅读 1765·2021-10-11 10:59
阅读 2405·2021-09-30 09:53
阅读 1767·2021-09-22 15:28
阅读 2798·2019-08-29 15:29
阅读 1561·2019-08-29 13:53
阅读 3209·2019-08-29 12:34
阅读 2852·2019-08-26 10:16
阅读 2661·2019-08-23 15:16