关于Java虚拟机性能调优的清单

关于Java虚拟机性能调优的清单

导语

前面一篇文章,介绍了一个Java虚拟机的调优实战,要想对Java虚拟机的内存溢出、垃圾收集时间过长等问题进行调优,你需要了解了Java虚拟机的运行时数据区域还有垃圾收集的内幕,当然,你还需要一些工具,来提高你调优的效率,因此,这一讲,给你整理了Java虚拟机性能调优所需要的全部资料的清单,方便你在调优时进行查找。


理论知识

任何实战都是建立在扎实的理论基础上的,尤其是计算机科学,你别想着能够像牛顿那样坐着一动不动就会有苹果去砸他然后发现万有引力,面对着一台电脑,你不动,它岿然不动也。

要想对Java虚拟机进行内存调优,这些前置课程是你必须要学习的:


Java HotSpot 虚拟机参数清单

在虚拟机调优的过程中,我们需要指定垃圾收集器、指定垃圾收集器的配置,这些都需要我们对虚拟机参数进行配置。HotSpot虚拟机提供了很多参数给用户对其进行配置,比如之前所讲的-client、-Xmx等(如何使用这些参数?),这些参数可以分为两种:标准的(standard)和非标准的(non-standard),其中非标准的都分为-X和-XX开头两种,X的含义和《X战警》里的X是一样的,代表未知的意思,X越多,说明这种参数的不稳定性越高。

  • 标准参数:这些参数非常稳定,并且HotSpot保证在后面的版本中会一直存在,比如-client、-server、-version等。
  • -X参数:这些参数以-X开头,Java不保证在所有虚拟机实现中都可以使用。
  • -XX参数: 这些参数以-XX开头,比-X更加不稳定(可能有bug的意思)。

这些参数的介绍,可以在Oracle的官网中查看,传送门:Java HotSpot VM Options


Java虚拟机性能监控和故障处理工具

了解了上面这些基本的理论知识,现在你需要一些强力的工具,来帮助你分析虚拟机的性能。

打开Java安装目录下的bin文件夹,你会看到除了我们常用的java和javac,居然还有很多其他的文件:



这些工具里面,有不少是Java提供的用于监控虚拟机运行状况的,既有命令行工具,如jstackjmap这两个特别常用的命令,也有像Visual VMJConsole这样的图形化界面。同样的,我给你找到了oracle上对这些工具最原汁原味的讲解,传送门:Java Platform, Standard Edition Troubleshooting Guide - Diagnostic Tools

JDK没有提供对jmap命令产生的dump文件的图形化界面,只提供了jhat命令来分析,对于dump文件的图形化工具,你可以使用eclipse memory analyer.


总结

以上,归纳总结了进行虚拟机调优的必备知识清单,方便你在调优时对照着进行参考。


干货分享

文末分享一下一些关于虚拟机调优的好文章:

HotSpot Virtual Machine Garbage Collection Tuning Guide —— Oracle官网上的,权威、原汁原味的介绍了垃圾收集器的;

Tuning Java Virtual Machines (JVMs) —— 也是Oracle官网上的,相比于上一篇,这一篇少了写理论,更多的是经验和实战的指导;

《深入理解Java虚拟机》 —— 国内虚拟机的经典之作,豆瓣评分8.7、亚马逊4.2、京东自营计算机与互联网销量榜 第17位(我觉得我可以去搞一下图书查询APP);

Java Performance Tuning, Profiling, and Memory Management —— DZone上的一篇文章,国内我还没看到有写的既清晰又有深度的博客;

CSDN Effective Java专栏 —— 哈哈哈,我自己的专栏;

文章被以下专栏收录