JVM常用分析工具

JVM常用分析工具

一、Java Virtual Machine (JVM)
Compile once, run everywhere.
这里写图片描述

这里写图片描述

二、垃圾收集器与内存回收分配策略
Serial -> 单线程、“Stop the world”、简单 高效{粗暴}、client模式 默认 新生代.
ParNew -> 并行 多线程版、CMS 唯一搭档(除了Serial)(server首选).
Parallel Scavenge -> 并行 多线程、吞吐量优先、自适应调节、新生代
Serial Old -> 单线程、s的老年代版本
Parallel Old ->并行 多线程、吞吐量优先、ps的老年代版本、
CMS(Concurrent Mark Sweep) -> 并发(标记 清除)、低停顿
G1(Garbage-First) -> 科技前沿成果@_@!!!、并行并发、分代收集、空间整合、可预测停顿

三、Java Development Kit (JDK) 命令行 工具
监视JVM
jps
jstat
jstatd
Jmc

故障排除
jcmd
jinfo
jhat
jmap
jsadebugd
jstack

·官网:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/

jps (JavaVirtual Machine Process Status Tool): 虚拟机进程状况工具
命令格式:jps [options] [hostid]
-q : 抑制类名的输出,JAR文件名和传递给main方法的参数,仅生成本地JVM标识符列表。
-m: 显示传递给该main方法的参数。输出可能是null嵌入式JVM。
-l : 显示应用程序main类的完整包名或应用程序的JAR文件的完整路径名。
-v : 显示传递给JVM的参数。
-V : 抑制类名的输出,JAR文件名和传递给main方法的参数,仅生成本地JVM标识符的列表。
-Joption : 传递option给JVM,其中的选项是optionsJava应用程序启动器的参考页面中描述的选项之一。例如,-J-Xms48m将启动内存设置为48 MB。
样例:

jstat(Java Virtual Machine (JVM) statistics):监视Java虚拟机(JVM)统计信息。
命令格式:jstat [ option vmid [interval[s|ms] [count] ]
Interval:间隔时间 count:次数
class:显示类加载器行为的统计信息。
compiler:显示有关Java HotSpot VM即时编译器行为的统计信息。
gc:显示垃圾回收堆行为的统计信息。
gccapacity:显示有关世代及其对应空间容量的统计数据。
gccause:显示有关垃圾回收统计信息(相同-gcutil)的摘要,其中包含最后和当前(适用时)垃圾收集事件的原因。
gcnew:显示新一代行为的统计信息。
gcnewcapacity:显示有关新一代及其相应空间大小的统计信息。
gcold:显示旧版本和Metaspace统计信息的统计信息。
gcoldcapacity:显示有关旧一代大小的统计信息。
gcmetacapacity:显示有关元空间大小的统计信息。
gcutil:显示有关垃圾收集统计信息的摘要。
printcompilation:显示Java HotSpot VM编译方法统计信息。

jinfo(Configuration Info for Java):生成配置信息。
命令格式:jinfo [ option ] pid
-flag 名称 : 打印指定命令行标志的名称和值。
-flag [+ | - ]名称 : 启用或禁用指定的布尔命令行标志。
-flag name = value : 将指定的命令行标志设置为指定的值。
-flags : 打印传递给JVM的命令行标志。
-sysprops : 将Java系统属性打印为名。

jmap(Memory Map for Java):内存映射工具[生成堆转储快照]
命令格式:jinfo [ option ] vmid
-dump:[live,] format = b,file = filename : 以hprof二进制格式转储Java堆filename。live子选项说明是否之dump出存活的对象。
-finalizerinfo : 打印有关正在等待最终确定的对象的信息(linux)。
-heap :显示java堆详细信息,如使用哪种回收器、参数配置、分代状况等(linux)。
-histo [:live] : 显示堆中对象统计信息,包括类、实例数量、合计容量。
-clstats : 打印Java堆的类加载器智能统计。对于每个类加载器,它的名称,它的活动程度,地址,父类加载器以及它加载的类的数量和大小。
-F : -dump或 -histo选项不响应时,该选项强制生成dump快照(不支持live)。

jhat(JVM Heap Analysis Tool):虚拟机堆转储快照分析工具
命令格式:jhat [ options ] 堆转储文件

jstack(Stack Trace for Java):Java堆栈跟踪工具
命令格式:jstack [ options ] pid
-F : jstack[ -l] pid不响应时强制堆栈转储。
-l : 打印有关锁的其他信息,例如所java.util.concurrent拥有的同步器列表。
-m : 打印混合模式堆栈跟踪,其中包含Java和本机C / C ++框架。

四、JDK可视化工具
1、Jconsole
2、Eclipse Memory Analyzer
3、VisualVM

VisualVM(All-in-One Java Troubleshooting Tool)
多合一故障处理工具
独立软件:https://visualvm.github.io/download.html
插件:http://java.net/projects/visualvm/downloads/download/release133/visualvm_launcher_u1_eclipse_36.zip

eclipse:
Help -> Install New Solfware…
这里写图片描述

这里写图片描述

这里写图片描述

远程方法调用RMI(Remote Method Invoke)
服务器端创建Jstatd RMI

$ cat jstatd.all.policy 
grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;  
};

启动:

nohup jstatd -J-Djava.security.policy=jstatd.all.policy &
$ jps -lm
85907 sun.tools.jstatd.Jstatd

参考:《深入理解 java虚拟机》 周志明
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/
https://visualvm.github.io/download.html
http://java.net/projects/visualvm/downloads/download/release133/visualvm_launcher_u1_eclipse_36.zip

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM常用监控工具有很多,其中一个重要的工具就是dump分析工具dump文件是指Java进程的内存快照,可以用于分析Java进程的内存使用情况,了解Java进程内部的情况。 下面介绍几个常用dump分析工具: 1. jmap jmap是JDK自带的一个命令行工具,可以生成Java进程的内存快照。使用jmap生成dump文件的命令如下: ``` jmap -dump:format=b,file=<filename> <pid> ``` 其中,format=b表示生成二进制格式的dump文件,file=<filename>表示指定保存dump文件的路径和文件名,<pid>表示Java进程的进程ID。 2. jstack jstack也是JDK自带的一个命令行工具,可以打印Java进程的线程堆栈信息。使用jstack生成dump文件的命令如下: ``` jstack -F <pid> > <filename> ``` 其中,-F表示在进程不响应时强制获取线程堆栈信息,<pid>表示Java进程的进程ID,> <filename>表示将线程堆栈信息输出到指定文件。 3. VisualVM VisualVM是一个功能强大的Java监控和分析工具,可以监控和分析本地和远程Java进程。VisualVM可以生成Java进程的各种信息,包括dump文件。使用VisualVM生成dump文件的步骤如下: - 在VisualVM中打开需要生成dump文件的Java进程。 - 选择“Heap Dump”选项卡,点击“Heap Dump”按钮。 - 选择保存dump文件的路径和文件名,点击“Save”按钮。 4. Eclipse Memory Analyzer Eclipse Memory Analyzer是一款功能强大的Java内存分析工具,可以帮助开发人员分析Java进程的内存使用情况。Eclipse Memory Analyzer可以打开各种格式的dump文件,包括使用jmap、jstack和VisualVM生成的dump文件。 以上是常用dump分析工具,可以帮助开发人员了解Java进程的内存使用情况。同时,需要注意的是,生成dump文件会对Java进程产生一定的影响,需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值