`
huangyongxing310
  • 浏览: 496449 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JVM 监控工具

 
阅读更多
JVM 监控工具


//====================================
jps
显示当前所有java进程pid的命令
jps -l
-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名


//====================================
jmap
jmap主要可以用于打印Java进程的内存映射或堆内存(Heap Dump文件)细节



jmap -histo 进程号 >1.txt //可以查看对象个数,占用堆内存大小,类名称

jmap -histo:live 6788 //输出到终端中

jmap -histo:live 6788 > d:/dump.txt //

//live,这个参数表示我们需要抓取目前在生命周期内的内存对象

6788:为进程ID

//内存使用的详细情况输出到文件
jmap -heap 进程号 >1.txt //可以查看新生代 老年代的使用情况

统计实例最多的类 前十位有哪些
jmap -histo pid | sort -n -r -k 2 | head -10

统计合计容量前十的类有哪些
jmap -histo pid | sort -n -r -k 3 | head -10

说明:
sort命令的部分参数含义解释如下
-n :使用“”纯数字”进行排序(默认是以文字类型来排序)
-r : 反向排序
-k :以那个区间(field)来进行排序的意思



64位机上使用需要使用如下方式:
jmap -J-d64 -heap pid


jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)


-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.
jmap -permstat 3772


jmap -dump:[live,]format=b,file=<filename> <pid>
通过-dump选项,把java堆中的对象dump到本地文件,然后使用MAT进行分析。
如果添加了live,只会dump活跃的对象。

jmap -histo[:live] <pid>
通过histo选项,打印当前java堆中各个对象的数量、大小。
如果添加了live,只会打印活跃的对象。


jmap -heap <pid>
通过-heap选项,打印java堆的配置情况和使用情况,还有使用的GC算法。


jmap -finalizerinfo <pid>
通过-finalizerinfo选项,打印那些正在等待执行finalize方法的对象。


jmap -permstat <pid>
通过-permstat选项,打印java堆永久代的信息,包括class loader相关的信息,和interned Strings的信息。


http://www.itboth.com/d/IjMjYj/jmap(jmap 命令的实现原理解析)



//====================================
jstack
jstack是java虚拟机自带的一种堆栈跟踪工具

以轻松地知道java程序是如何崩溃和在程序何处发生问题。

jstack 查看线程具体在做什么,可看出哪些线程在长时间占用CPU,尽快定位问题和解决问题

在64位机器上,需要指定选项"-J-d64"


jstack [-l] pid


https://www.cnblogs.com/kongzhongqijing/articles/3630264.html


//====================================
JConsole

可以查看内存,线程数,CPU,Mbean,但那个类的实例个数和占用内存情况没有
JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行,

//====================================
jstat
jstat:用于输出java程序内存使用情况,包括新生代、老年代、元数据区容量、垃圾回收情况。


jstat -gcutil pid time


//====================================
MAT(与jhat类似但比jhat功能丰富些)
MAT(Memory Analyzer Tool)工具是eclipse的一个插件(MAT也可以单独使用),使用起来非常方便,尤其是在分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,以及可以很方便的找出对象GC Roots的相关信息,当然最吸引人的还是能够快速为开发人员生成内存泄露报表,方便定位问题和分析问题。


jmap -dump:format=b,file=d:/heapTest.bin 3676 //生成文件


//====================================
jhat
jhat(Java Head Analyse Tool)是jdk自带的用来分析java堆快照的工具

用途:是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言

有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:
jhat -J-Xmx512m <heap dump file>

第一步:导出堆
jmap -dump:format=b,file=d:/heapTest.bin 3676
第二步:分析堆文件
jhat d:/heapTest.bin
第三步:查看html
http://localhost:7000


这里列出对象,对象实例数量、总占用内存大小
http://localhost:7000/histo/

对于jhat启动后显示的html页面中功能:
(1)显示出堆中所包含的所有的类
(2)从根集能引用到的对象
(3)显示平台包括的所有类的实例数量
(4)堆实例的分布表
(5)执行对象查询语句


//====================================
JProfiler
这个软件是商用的



//====================================
JVisualVM


在JVisualVM的插件库中,可以安装btrace插件。安装后,可以在程序运行的过程中,直接进行代码更改。

与JConsole一样打开,JConsole是JVisualVM的子集


安装Visual GC插件,可以查看GC信息

https://blog.csdn.net/kl28978113/article/details/53817827(JVisualVM简介与内存泄漏实战分析)




分享到:
评论

相关推荐

    jvm监控工具介绍

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

    精通Java监控:JVM监控工具的使用与实践

    本文将详细介绍如何在Java中使用JVM监控工具,包括监控工具的选择、基本使用方法、数据分析技巧和实际应用案例。 JVM监控工具是Java开发者的重要伙伴,它们提供了对Java应用程序内部运行机制的洞察。通过本文的详细...

    JVM监控工具使用入门

    ### JVM监控工具使用入门 #### 引言 Java虚拟机(JVM)是运行Java程序的基础环境,其性能直接影响到应用程序的稳定性和响应速度。为了更好地理解和优化JVM的运行状态,开发人员需要掌握一系列的监控工具和技术。...

    JVM监控工具,用来怎么提高JAVA的效率

    JVM监控工具对于理解程序性能、定位问题和优化Java应用的效率至关重要。本篇文章将详细探讨如何利用JVM监控工具来提升Java应用的运行效率。 首先,JVM监控工具可以帮助我们实时查看和分析应用程序的运行状态。例如...

    JVM监控工具介绍

    ### JVM监控工具详解 在Java应用开发与维护过程中,确保应用程序稳定高效地运行至关重要。为此,JVM(Java虚拟机)提供了多种内置工具用于监控、诊断及优化Java应用程序的性能。本文将详细介绍JVM自带的一些核心...

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

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

    JVM监控工具介绍.docx

    以下是几种常用的JVM监控工具的详细介绍: 1. **jstack**: `jstack` 是一个用于打印Java线程堆栈跟踪的工具,它可以帮助我们了解应用程序中线程的状态,比如是否发生死锁或者线程阻塞。通过指定进程ID,我们可以...

    Java内存泄露_JVM监控工具介绍

    "Java内存泄露_JVM监控工具介绍" Java内存泄露是Java开发中常见的一种问题,发生内存泄露可能会导致Java应用程序崩溃或性能下降。在Java中,内存泄露的原因非常多样,例如,静态变量、循环引用、数据库连接池、...

    arthas阿里的开源jvm监控工具

    arthas阿里的开源jvm监控工具,可以用于JVM的调优,快速生成JVM的运行图,方便开发,具体可见阿里的git

    jvm监控工具

    JVM监控工具对于理解应用性能、优化内存使用、定位问题和故障排查至关重要。以下是一些关于JVM监控工具的重要知识点: 1. **JConsole**: JConsole是Java自带的一个图形化JVM监控工具,它可以显示关于Java应用程序的...

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

    ### JVM监控工具详解 在Java开发与运维领域,掌握有效的监控工具对于确保应用程序的稳定运行至关重要。本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们...

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

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

    JVM 监控 调优 工具

    **JVM监控工具** 1. **JConsole**:这是Java SDK自带的一个图形化监控工具,可以查看JVM的内存使用情况、线程状态、类加载情况等。 2. **VisualVM**:功能更为强大的多合一JVM分析工具,提供CPU和内存分析、线程...

    jvm监控工具visualVM

    VisualVM是一款强大的JVM(Java Virtual Machine)监控和性能分析工具,由Oracle公司开发并提供。它集成在Java SDK中,默认位于%JAVA_HOME%\bin目录下,方便开发者直接使用。这款工具提供了丰富的功能,帮助Java...

    jvisualvm来JVM监控

    总结,jvisualvm作为一款免费且功能齐全的JVM监控工具,为开发者提供了便利的性能分析环境。熟练掌握其使用,能有效提升我们的开发效率,确保Java应用程序的高效稳定运行。通过实际操作和不断实践,我们可以更好地...

    JVM 监控程序

    JVM监控工具可提供线程快照,帮助识别和解决这些问题。 9. **类加载与卸载** 类加载器的运作机制和类的生命周期对JVM性能有一定影响,监控类的加载和卸载有助于优化应用的类加载策略。 10. **性能调优** 通过JVM...

    jvm内存监控工具使用

    ### JVM内存监控工具详解 #### 引言 Java Virtual Machine (JVM) 是运行 Java 应用程序的核心组件,其性能直接影响应用的响应速度和稳定性。JVM 的内存管理是性能优化的关键,尤其是在高并发环境下,合理的内存...

    JVM调优工具分享

    总的来说,JConsole和VisualVM都是强大的JVM监控工具,它们提供了丰富的功能来协助开发者进行性能优化。JConsole简洁易用,适合日常的基本监控;而VisualVM则更为全面,尤其在插件的支持下,可以进行深入的性能分析...

    vmmap 观察jvm内存 监控jvm jvm线程

    在Java开发过程中,对JVM(Java虚拟机)的...通过熟练使用`vmmap`以及结合其他JVM监控工具,开发者可以有效地进行问题定位,优化应用性能,确保JVM健康运行。记住,理解JVM内存管理机制是提升Java应用性能的关键步骤。

Global site tag (gtag.js) - Google Analytics