最近在看nacos问题,就把nacos启动用的几个jvm参数写出来了。
-client #设置jvm使用client模式,多用于桌面client端
-server #使用server模式,启动速度虽然慢(比client模式慢10%左右),但是性能和内存管理效率很高,适用于服务器,用于生成环境、开发环境或测试环境的服务端;
这是查询GC问题最常用的命令之一,具体参数如:
-verbose:class #输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc #输出每次GC的相关情况。
-verbose:jni #输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
-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为准。
-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这个垃圾收集器