Java进阶指南:JVM核心知识1.5相关性能分析工具

系列文章目录

1:JVM核心知识

        1.1:字节码

        1.2:类加载器

        1.3:内存模型

        1.4:JVM启动参数

        1.5:相关性能分析工具



前言

本系列主要针对想进一步进阶Java的开发者,本文介绍JDK内置工具。


一、JVM常见内置命令

java Java 应用的启动程序

javac JDK 内置的编译工具

javap 反编译 class 文件的工具

jps/jinfo 查看 java 进程

jstat 查看 JVM 内部 gc 相关信息

jmap 查看 heap 或类占用空间统计

jstack 查看线程信息

jcmd 执行 JVM 相关分析命令(整合命令)

这些命令默认安装在bin目录下

1.jps -mlv打印各个java进程,包括运行哪个jar包,哪个类。

jps可能查看不全,因为可能多个用户在使用一台机器,jps只能看当前用户的进程,如果想看所有的进程,可以用sudo提升权限。

同时一台机器不同的java进程是用不同的jdk版本run起来的,使用某个版本的jps可能也会导致查看不全的情况,因此最好在一台机器上安装一个确定的jdk

2.jstat -gc 与 jstat -gcutil,主要是用来查看GC相关信息的。

jstat -gc 进程号 1000 1000表示打印指定进程号的信息,每隔1秒打印一次,一共打印1000次

-gcutil是-gc的精简版,-gc显示的是字节数,-gcutil显示的是百分比

3.jmap

-heap用来打印堆内存,与jstat不同的是jmap看的是静态的

-histo查看哪些类占空间最多,能够看到类的实例数与占用的字节总数,我们可以据此来对代码进行优化。

-dump直接生成堆内存的转储文件,可以指定文件格式与文件名

4.jstack可以查看某个java进程所有的线程信息

jstack -l pid l 长列表模式,将线程相关的 locks 信息一起输 出,比如持有的锁,等待的锁

在mac或linux上可以用kill -3 来替代此命令

5.jcmd是对前面命令的综合

jcmd pid VM.version

jcmd pid VM.flags

jcmd pid VM.command_line

jcmd pid VM.system_properties

jcmd pid Thread.print

jcmd pid GC.class_histogram

jcmd pid GC.heap_info

二、JVM图形化工具

1.jconsole

在命令行输入 jconsole 即可打开

本地 JVM 可以直接选择

远程 JVM 可以通过 JMX 方式连接

概览模块有:

        堆内存使用量

        线程

        类

        CPU占用率

内存图表包括:

• 堆内存使用量,主要包括老年代(内存池 “PS Old Gen”)、新生代(“PS Eden Space”)、存活区 (“PS Survivor Space”);

• 非堆内存使用量,主要包括内存池“Metaspace”、 “Code Cache”、“Compressed Class Space”等。 可以分别选择对应的 6 个内存池

在这里,我们可以手动执行GC,也可以查看各个内存池使用比率,还可以看JVM执行垃圾回收的次数,以及所消耗的时间。

线程面板:

展示了线程数变化信息,以及监测到 的线程列表。 我们可以常根据名称直接查看线程的状态(运 行还是等待中)和调用栈(正在执行什么操 作)。 特别地,我们还可以直接点击“检测死锁”按 钮来检测死锁,如果没有死锁则会提示“未检 测到死锁”

类监控面板:

可以直接看到 JVM 加载和卸载的 类数量汇总信息,以及随着时间的动态变化

VM 概要:

数据有五个部分: 第一部分是虚拟机的信息; 第二部分是线程数量,以及类加载的汇 总信息; 第三部分是堆内存和 GC 统计; 第四部分是操作系统和宿主机的设备信 息,比如 CPU 数量、物理内存、虚拟 内存等等; 第五部分是 JVM 启动参数和几个关键 路径,这些信息其实跟 jinfo 命令看到 的差不多


总结

以上就是今天要讲的内容,本文介绍了相关性能分析工具,这一章也走向了尾声,下面我们将开始学习GC的背景与一般原理,敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值