![实战Java虚拟机:JVM故障诊断与性能优化(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/901/47378901/b_47378901.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2 小参数能解决大问题:学会设置Java虚拟机的参数
Java虚拟机可以使用JAVA_HOME/bin/java程序启动(JAVA_HOME为JDK的安装目录),一般来说,Java进程的命令行使用方法如下:
![](https://epubservercos.yuewen.com/8F60EA/26763631609316106/epubprivate/OEBPS/Images/39_1.jpg?sign=1738840764-jRVBffhDhHr7piZ0083IkyPDDVtnlddP-0-4149f7b624d86f415380d6f76075d272)
其中,-options表示Java虚拟机的启动参数,class为带有main()函数的Java类,args表示传递给主函数main()的参数。
如果需要设定特定的Java虚拟机参数,在options处指定即可。目前,Hotspot虚拟机支持大量的虚拟机参数,可以帮助开发人员进行系统调优和故障排查。相关的一些参数将在本书的后续章节中逐步介绍,本节则主要介绍参数的设置方法。
【示例2-1】以如下代码为例,我们先来了解一下如何设置参数。
![](https://epubservercos.yuewen.com/8F60EA/26763631609316106/epubprivate/OEBPS/Images/39_2.jpg?sign=1738840764-T7HVXysPlY0yIsXverl0xNYhE2gG5ufz-0-5db9a887559d0594a3695cf33d785342)
上述代码打印了传递给main()函数的参数,同时打印了系统的最大可用堆内存。使用如下命令运行这段代码:
![](https://epubservercos.yuewen.com/8F60EA/26763631609316106/epubprivate/OEBPS/Images/40_1.jpg?sign=1738840764-Sn8O3kKIoXuzYfDvWrBRIdY1VXRcLC6D-0-fd3e9884a8c16634e9f2565b5f231eb6)
从结果可以看到,第一个参数-Xmx32m传递给Java虚拟机,生效后,使得系统最大可用堆空间为32MB,参数a则传递给主函数main(),作为应用程序的参数。
-Xmx会在本书后续章节中展开讨论,除了-Xmx,虚拟机还支持大量的调优诊断参数,其设置方式都是类似的,在本书后续章节中会逐步介绍这些参数。
如果读者使用Eclipse等开发工具运行程序,在运行对话框的参数选项卡上,也可以设置这两个参数,如图2.2所示,显示了“程序参数”和“虚拟机参数”两个文本框,将所需的参数填入即可。
![](https://epubservercos.yuewen.com/8F60EA/26763631609316106/epubprivate/OEBPS/Images/40_2.jpg?sign=1738840764-QhQnQEn0Q4j8H721ReqCKCiBoGtcNJIm-0-003d7dd39f9f4f7c0401edde303eccbe)
图2.2 通过Eclipse为虚拟机设置启动参数