前言
- 每个虚拟机的参数可能会有所不同,下面参数都是针对HotSpot虚拟机的参数配置。
参数
-XX:+/-UseTLAB 设置虚拟机是否使用TLAB(Thread Local Allocation Buffer)本地线程分配缓冲
-XX:+PrintGCDetails 发生垃圾收集行为时打印内存回收日志,并在进程退出时输出当前的内存各区域分配情况
-
堆内存分配参数:
- 最大值参数:-Xmx、最小值参数:-Xms
- 新生代内存分配大小:-Xmn 。那么剩下的就是老年代的内存大小
- -XX:+HeapDumpOnOutOfMemoryError :让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析。
-XX:SurvivorRatio=8 :配置新生代中Eden区和一个Survivor区空间比例是8:1(默认值)新生代中有一个Eden、2个Survivor。eden和survivor在日志中打印的名称为enden space 、from space 、to space。
案例:设置堆大小为20MB,不可扩展,其中10MB分配给新生代,剩下10MB给老年代,Eden和一个Survivor去的空间比例为8:1
-Xmx20M -Xms20M -Xmn10M -XX:SurvivorRatio=8
-XX:PretenureSizeThreshold参数,令大于这个设置值的对象直接在老年代分配。这样做的目的是避免在Eden区及两个Survivor区之间发生大量的内存复制
非堆内存
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
栈容量
- -Xss2M:设置线程栈容量为2M