[深入理解Java虚拟机] 第4、5章 性能监控与调优

本文详细介绍了JDK自带的各种命令行和可视化工具,包括jps、jstat、jinfo、jmap、jhat、jstack和HSDIS等,以及JConsole和VisualVM。同时,提供了在高性能硬件上部署程序的策略和调优案例,帮助读者理解和解决实际运行中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDK的命令行工具

jps:虚拟机进程状况工具

可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID)

jstat:虚拟机统计信息监视工具

用于监视虚拟机各种运行状态信息的命令行工具;

jinfo:Java配置信息工具

实时地查看和调整虚拟机各项参数。使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表

jmap:Java内存映像工具

用于生成堆转储快照(一般称为heapdump或dump文件)

jhat:虚拟机堆转储快照分析工具

与jmap搭配使用,来分析jmap生成的堆转储快照

jstack:Java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)

HSDIS:JIT生成代码反汇编

HSDIS是一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件,它的作用是让HotSpot的-XX:+PrintAssembly指令调用它来把动态生成的本地代码还原为汇编代码输出,同时还生成了大量非常有价值的注释,这样我们就可以通过输出的代码来分析问题。

JDK的可视化工具

JConsole:Java监视与管理控制台

一种基于JMX的可视化监视、管理工具。它管理部分的功能是针对JMX MBean进行管理

VisualVM:多合一故障处理工具

不需要被监视的程序基于特殊Agent运行,因此它对应用程序的实际性能的影响很小,使得它可以直接应用在生产环境中。


调优案例

  • 高性能硬件上的程序部署策略
    在高性能硬件上部署程序,目前主要有两种方式:

    • 通过64位JDK来使用大内存。
    • 使用若干个32位虚拟机建立逻辑集群来利用硬件资源。
  • 集群间同步导致的内存溢出

  • 堆外内存导致的溢出错误

  • 外部命令导致系统缓慢

  • 服务器JVM进程崩溃

  • 不恰当数据结构导致内存占用过大

  • 由Windows虚拟内存导致的长时间停顿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值