常用jvm参数详解

发布时间:2023年12月28日

最近在看nacos问题,就把nacos启动用的几个jvm参数写出来了。

1.标准参数(-开头的)

-client #设置jvm使用client模式,多用于桌面client端

-server #使用server模式,启动速度虽然慢(比client模式慢10%左右),但是性能和内存管理效率很高,适用于服务器,用于生成环境、开发环境或测试环境的服务端;

这是查询GC问题最常用的命令之一,具体参数如:

-verbose:class #输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。

-verbose:gc #输出每次GC的相关情况。

-verbose:jni #输出native方法调用的相关情况,一般用于诊断jni调用错误信息。

2.非标准参数(-X开头的)

-Xmn #new新生代内存大小,包括E区和两个S区的总和。设置了xmn参数后,-XX:NewRatio=2失效

-Xms #初始堆的大小,也是堆大小的最小值,默认值是总共的物理内存/64(且小于1G)

-Xmx #堆的最大值。建议在开发测试环境可以用Xms和Xmx分别设置最小值最大值,但是在线上生产环境,Xms和Xmx设置的值必须一样,原因与年轻代一样——防止抖动

-Xss #这个参数用于设置每个线程的栈内存,默认1M

-Xloggc:file #与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。若与verbose命令同时出现在命令行中,则以-Xloggc为准。

3.非静态参数(-XX:开头的)

-XX:NewSize=125m #新生代对象生成时占用内存的默认值

-XX:MaxNewSize=size #新生成对象能占用内存的最大值

-XX:MaxPermSize=64m #方法区所能占用的最大内存(非堆内存)

-XX:PermSize=64m #方法区分配的初始内存

-XX:NewRatio=2 #新生代内存容量与老生代内存容量的比例,表示new:old=1:2

-XX:SurvivorRatio=8 #Eden区域Survivor区的容量比值,如默认值为8,代表Eden:Survivor1:Survivor2=8:1:1

-XX:+HeapDumpOnOutOfMemoryError #让JVM在遇到OOM时生成堆转储文件

-XX:HeapDumpPath=./java_pid.hprof #指定导出堆信息时的路径或文件名

-XX:-PrintGC #每次GC时打印相关信息

-XX:-PrintGCDetails #每次GC时打印详细信息

-XX:-PrintGCTimeStamps #打印每次GC的时间戳

-XX:MetaspaceSize #元空间大小,元空间本质跟永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是使用本机内存。因此,元空间大小仅受本地内存限制。

-XX:MinHeapFreeRatio #当堆中可用内存小于该值时,堆内存会开始增加

-XX:MaxHeapFreeRatio #当堆中可用内存大于该值时,堆内存会开始减少

-XX:+UseG1GC #选择G1这个垃圾收集器

文章来源:https://blog.csdn.net/qq_40764171/article/details/135263954
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。