#jinfo -flags 1
Non-default VM flags: -XX:CICompilerCount=3 -
XX:InitialHeapSize=260046848 -XX:MaxHeapSize=4129292288 -
XX:MaxNewSize=1376256000 -XX:MinHeapDeltaBytes=524288 -
XX:NewSize=86507520 -XX:OldSize=173539328 -
XX:+UseCompressedClassPointers -XX:+UseCompressedOops -
XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC
-XX:CICompilerCount=3
设置并行编译的线程数为3。这可以提高编译速度,特别是在多核处理器上。
-XX:InitialHeapSize=260046848
设置初始堆内存大小为256MB。这是Java虚拟机启动时分配给堆内存的最小空间。
-XX:MaxHeapSize=4129292288
设置最大堆内存大小为4GB。这是Java虚拟机允许分配的最大堆内存空间。
-XX:MaxNewSize=1376256000
设置新生成对象的最大尺寸为1.3GB。当新生成的对象超过这个尺寸时,会触发垃圾回收。
-XX:MinHeapDeltaBytes=524288
设置堆内存增量为512KB。这是在堆内存增长时,每次增加的最小值。
-XX:NewSize=86507520
设置新生成对象的初始尺寸为8MB。这是新生成对象在第一次分配内存时的初始尺寸。
-XX:OldSize=173539328
设置老年代的初始尺寸为16MB。这是老年代在第一次分配内存时的初始尺寸。
-XX:+UseCompressedClassPointers
启用压缩类指针。这可以减少类指针的大小,从而减少内存使用和提高性能。
-XX:+UseCompressedOops
启用压缩对象指针。这可以减少对象指针的大小,从而减少内存使用和提高性能。
-XX:+UseFastUnorderedTimeStamps
启用快速无序时间戳。这可以提高时间戳的访问速度,从而提高性能。
-XX:+UseParallelGC
启用并行垃圾回收。这可以在多核处理器上提高垃圾回收的效率。

当前pod资源限制:2C 4G HDD30G。

元数据空间大小未限制,有大对象oom风险;堆内存未指定最大内存限制,64位的JVM上,物理内存小于192MB时,为物理内存的一半;物理内存大192MB且小于128GB时,为物理内存的四分之一;大于等于128GB时,都为32GB;jvm默认采用物理内存的4分之一,当前最大堆内存3.9GB。
年轻代和老年代空间利用率不足,对于频繁gc的年轻带比例可以适当下调,内存比例建议修改为1:2,新生代中 Eden 区与 Survivor 区的空间比也适当调整,可以增加年轻代空间的利用率,垃圾回收器指定CMS,并设置触发比例,提高整体空间的利用率。
-Xms256m -Xmx512m -XX:NewRatio=2 -XX:MetaspaceSize=20m -
XX:MaxMetaspaceSize=128m -Xss256k -
XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/var/fr-thirdService/logs/oomcxk-%t.hprof -XX:+PrintGC -XX:+PrintGCDateStamps
-XX:+PrintGCDetails -Xloggc:/var/fr-thirdService/logs/gccxk.log -XX:SurvivorRatio=8 -
XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-Xms256m
设置 JVM 启动时分配的堆内存大小为 256MB。
-Xmx512m
设置 JVM 可以使用的最大堆内存大小为 512MB。
-XX:NewRatio=2
这个参数设置了老年代与新生代的比例。在这里,老年代与新生代的大小比为 2:1。
-XX:MetaspaceSize=20m
设置元空间的最小大小为 20MB。元空间用于存储类的元数据,这个值表示元空间的最小大小。
-XX:MaxMetaspaceSize=128m
设置元空间的最大大小为 128MB。
-Xss256k
设置线程栈大小为 256KB。
-XX:+HeapDumpOnOutOfMemoryError
当 JVM 发生内存溢出错误时,将堆转储到文件。
-XX:HeapDumpPath=/var/ids/logs/oomcxk.hprof
指定堆转储文件的存储路径和文件名格式。
-XX:+PrintGC
打印垃圾收集的详细信息。
-XX:+PrintGCDateStamps
在垃圾收集日志中添加时间戳。
-XX:+PrintGCDetails
打印垃圾收集的详细信息,包括各个代的大小和回收的内存量等。
-Xloggc:/var/ids/logs/gccxk.log
指定垃圾收集日志的存储路径和文件名。
-XX:SurvivorRatio=8
新生代中 Eden 区与 Survivor 区的空间比为 8:1。
-XX:+UseConcMarkSweepGC
使用 CMS 垃圾收集器。
-XX:CMSInitiatingOccupancyFraction=75
初始化 CMS 垃圾收集器的触发比例,这个值表示老年代使用的空间占整个堆空间的 75%。
-XX:+UseCMSInitiatingOccupancyOnly
只使用 CMSInitiatingOccupancyFraction 来确定 CMS 垃圾收集器的触发时机,忽略其他触发条件。

64位的JVM上,物理内存小于192MB时,为物理内存的一半;物理内存大192MB且小于128GB时,为物理内存的四分之一;大于等于128GB时,都为32GB。


本文作者:段玉贇(上海新炬中北团队)
本文来源:“IT那活儿”公众号





