常用的jvm参数
jvm的一些常用参数设置(基于nacos)
- -XX:CICompilerCount =12 编译器线程数
- -XX:CompressedClassSpaceSize=327155712字节 (312.0MB,1M=2^20byte=1024*1024byte)
当 -XX:+UseCompressedClassPointers 选项为 ON(堆 < 32G 的默认值)时,类从 Metaspace 移动到称为 Compressed Class Space 的单独区域。这是为了允许使用 32 位值而不是 64 位来寻址 VM 类结构
- -XX:GCLogFileSize=20M
GC文件滚动大小,需开启UseGCLogFileRotation,表示个文件上限大小,超过就触发分割
- -XX:+HeapDumpOnOutOfMemoryError 当jvm发生oom时,自动生成dump文件
- -XX:HeapDumpPath=null 指定目录下生成dump文件
- -XX:InitialHeapSize=2147483648(2048m) 初始堆的大小
- -XX:MaxHeapSize=2147483648 最大堆内存
- -XX:MaxMetaspaceSize=335544320 元空间最大值
- -XX:MaxNewSize=1073741824 新生代内存最大值
- -XX:MetaspaceSize=134217728 元空间初始大小
- -XX:MinHeapDeltaBytes=524288
表示当我们要扩容或者缩容的时候,决定是否要做或者尝试扩容的时候最小扩/缩多少,默认为192K。使用G1时,在当新生代无法存储新创建的对象时,会先做一次扩容,扩容大小就是MinHeapDeltaBytes的值,如果还存不下就做GC
- -XX:newSize=1073741824 :新生代初始化内存的大小(注意:该值需要小于-Xms的值)
- -XX:+UseGCLogFileRotation 开启gc日志分割
- -XX:NumberOfGCLogFiles=10 最多分割几个文件,超过之后从头开始写
- -XX:OldSize:设置JVM启动分配的老年代内存大小
- -XX:-OmitStackTraceInFastThrow 异常时打印堆栈信息
- -XX:+PrintGC(或者-verbose:gc)
开启了简单GC日志模式,为每一次新生代(young generation)的GC和每一次的Full GC打印一行信息
- -XX:+PrintGCDateStamps GC的打印基于日期的时间戳
- -XX:+PrintGCDetails 用于打印输出详细的GC收集日志的信息
- -XX:+PrintGCTimeStamps 打印CG发生的时间戳
- -XX:+UseCompressedClassPointers 开启指针压缩
- -XX:+UseCompressedOops
oop = “ordinary object pointer” 普通对象指针。用来开启普通对象的指针压缩
- -XX:+UseFastUnorderedTimeStamps 获得更准确的时钟,但开销更高
- -XX:-UseLargePages 不使用大页面内存
- -XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效
总结
最近研究jvm参数配置的时候,参考了nacos的默认配置,记录一下各个参数的具体含义

浙公网安备 33010602011771号