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

版权声明: https://blog.csdn.net/Blanchedingding/article/details/85999995

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虚拟内存导致的长时间停顿

猜你喜欢

转载自blog.csdn.net/Blanchedingding/article/details/85999995
今日推荐