目录
JVM参数分类:
JVM的参数分为3类:
- 标准参数: 例如java -version, java -help
- X参数: Xint, Xcomp, Xmixed三个参数指定java代码执行方式,是解释执行,代码编译执行(JIT编译器),还是混合模式执行
- XX参数: 又分为两种,布尔型的和赋值型的。 布尔型:-XX: +PrintGCDetails, -XX:+UserG1GC等,赋值型:-XX: initialHeapSize=1000m(注意:-Xms是其简写), -XX: MaxheapSize = 1000m(注意:-Xmx是其简写)
常用JVM优化选项:
添加JVM参数方式总结:
在各种各样的执行环境下,应该怎样添加JVM参数呢?
查看与修改JVM参数:
使用jinfo实时的查看和修改JVM参数,当然了,只能修改其中一部分。
有些是不能修改的,例如InitialHeapSize(简称-Xms),垃圾回收器等
能够被设置的,只包括下面的被标记为manageable的参数:
修改一下下面的JVM参数:
内存常用JVM参数:
以下为常见的JVM的堆、栈、方法区内存大小的设置:
直接内存:(3条消息) JVM 直接内存_Purine King的博客-CSDN博客_jvm直接内存
Note:要特别注意这个 -XX:OnOutOfMemoryError 参数。
这个参数可以指定一个脚本,当系统发生OOM的时候,执行这个脚本去做一些操作,比如重启JVM等等
ParallelGC垃圾收集器:
ParallelGC注重吞吐量(对于暂停时间的要求不能太苛刻),适用于服务器端,JDK1.8的默认垃圾收集器。
-XX:MaxGCPauseMillis 与 -XX:GCTimeRatio这两个参数是相互矛盾的,满足了GC暂停时间短,就不能满足高吞吐量。
-XX:+UseAdaptiveSizePolicy,可以根据吞吐量和GC暂停时间的设置,自动调整新生代Eden和Survivor的比例。
CMS垃圾回收器:
第一款并发垃圾收集器(主打低延迟)。因为采用标记清除算法,所以需要指定在Full GC后进行压缩整理操作。
与ParNewGC垃圾收集器组合使用。
CMS在JDK14中被移除,并且从JDK9开始就被标记为Deprecate了
CMS垃圾回收日志:
G1垃圾回收器:
主打低延迟,跟CMS一样。
垃圾回收日志:
实际使用的时候,一般要加上-Xloggc:<file>参数,将GC log信息打印到文件中。
从日志中辨别垃圾回收器:
怎么选择垃圾收集器:
其它参数:
Java代码获取JVM参数:
总结:
因为在运行时能够修改的JVM参数非常有限,而且都是些不重要的参数,所以在JVM运行前要设置好主要的JVM参数。
参考尚硅谷 宋红康老师教程