JVM一些参数说明

-server: 服务器模式启动,启动后默认提高接口或者方法首次调用的响应速度

-Xms8g -Xmx8g -Xmn4g: 默认的堆大小是8g内存,新生代是4g内存, 高配物理机是48g内存的,这里给堆内存20g,其中新生代给10g,当然要留一些内存给操作系统来用

-XX:+UseG1GC -XX:G1HeapRegionSize=16m:这是选用了G1垃圾回收器来做分代回收,对新生代 和老年代都是用G1来回收 这里把G1的region大小设置为了16m,这个如果机器内存比较多,region大小可以调大一些给到16m,不然用2m的region,会导致region数量过多的

-XX:G1ReservePercent=25:在G1管理的老年代里预留25%的空闲内存,保证新生代对象晋升到老年代的时候有足 够空间,避免老年代内存都满了,新生代有对象要进入老年代没有充足内存了 默认值是10%,略微偏少

-XX:InitiatingHeapOccupancyPercent=30:当堆内存的使用率达到30%之后就会自动启动G1的并发垃圾回收,开 始尝试回收一些垃圾对象 默认值是45%,这里调低了一些,也就是提高了GC的频率,但是避免了垃圾对象过多,一次垃圾回收耗时过长的问题

-XX:SoftRefLRUPolicyMSPerMB=0:这个参数默认设置为0了,建议这个参数不要设置为0,避免频繁回收一些软引用的Class对象,这里可以调整为比如1000

-verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps – XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation – XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m:这一堆参数都是控制GC日志打印输出的,确定了gc日志文件的地址,要 打印哪些详细信息,然后控制每个gc日志文件的大小是30m,最多保留5个gc日志文件。

-XX:-OmitStackTraceInFastThrow:有时候JVM会抛弃一些异常堆栈信息,因此这个参数设置之后,就是禁用这个 特性,要把完整的异常堆栈信息打印出来

-XX:+AlwaysPreTouch:这个参数的意思是刚开始指定JVM用多少内存,不会真正分配给他,会在实际需要使用的时候再分配给 他 所以使用这个参数之后,就是强制让JVM启动的时候直接分配指定的内存,不要等到使用内存的时候再分配

-XX:MaxDirectMemorySize=15g:这是说RocketMQ里大量用了NIO中的direct buffer,这里限定了direct buffer最多申请多少, 如果你机器内存比较大,可以适当调大这个值

-XX:-UseLargePages -XX:-UseBiasedLocking:这两个参数的意思是禁用大内存页和偏向锁。

标签

发表评论