JVM常用配置参数

JVM运行时内存分为几大块:

名称对象声明周期特点
新生代朝生夕灭
老年代长生命周期
永久代永久存在

作为入门配置,我们重点关注新生代和老年代的配置,其他参数我们使用默认配置。

java -server -Xms 2g -Xmx 2g
Xms和Xmx是核心配置,Xms初始堆大小,Xmx最大堆大小,我们一般将这两个值设置相同,避免垃圾回收后JVM重新分配内存,影响性能

-XX:NewSize=1g 设置新生代最小空间大小
NewSize是核心配置,表示设置新生代内存的大小,一般建议设置为总堆内存大小的三分之一

-XX:MaxPermSize=128m
设置最大永久代大小,如果加载的类库过多,可以适当加大这个值

-XX:NewRatio=n (2为默认值)
设置新生代和老年代的比例:-XX:NewRatio=老年代/新生代。

-XX:SurvivorRatio=n(8为默认值)
用来设置新生代中eden空间和from/to空间的比例。设置为8表示eden和两个Survivor的比例为8:2,每个Survivor占新生代的十分之一,这里eden设计的比例大,是因为JVM中大部分对象都是朝生夕灭的

-XX:+UseParNewGC(复制算法)
年轻代GC为多线程垃圾收集器,提高垃圾收集器性能

-XX:+UseConcMarkSweepGC(标记-清除算法)
老年代为并发收集器,提高垃圾收集器性能

-XX:+HeapDumpOnOutOfMemoryError
使用该参数可以在内存溢出时导出整个堆信息到文件

-XX:HeapDumpPath=D:/OOM.dump
可以设置导出堆的存放路径地址