新生代配置
- -Xmn:可以设置新生代的大小,这个参数占整个堆空间的1/3 或1/4
- -XX:SurvivorRatio 用来设置新生代中eden空间和 from to空间的比例
例如:-XX:SurvivorRatio=2(eden/from|to)
- -XX:NewRatio=老年代/新生代
堆溢出处理
- -XX:+HeapDumpOnOutOfMemoryError
在使用该参 数可以在内存溢出时导出整个堆信息 - -XX:HeapDumpPath
可以设置导出堆的存放路径
内存分析工具
Memory Aanlyzer 1.5.0
- -XX:Xss 线程栈空间
方法区
和java堆一样,是一块所有线程共享的内存区域,用于保存系统的类信息
- -XX:MaxPermSize 默认为64M
- -XX:PermSize
直接内存配置
-XX:MaxDirectMemorySize
默认为最大堆空间(-Xmx),达到上限时,触发垃圾回收
对象如何进入老年代
-XX:MaxTenuringThreshold 默认情况为15
大对象无法在新生代eden区装入时,会直接进入老年代
-XX:PretenureSizeThreshold 设置进入老年代对象大小
TLAB区域优先分配
TLAB
Thread Loacl Allocation Buffer 线程本地分配缓存
- -XX:+UseTLAB (
+启用 -禁用
) - -XX:+TLABSize
- -XX:TLABRefillWasteFraction 设置维护进入TLAB空间单个对象大小,是一个比例值
- -XX:+PrintTLAB 查看TLAB信息
- -XX:ResizeTLAB 调整XX:TLABRefillWasteFraction 阀值
对象创建流程
1 栈
2 TLAB
3 老年代
4 eden