JAVA虚拟机(三)堆_空间分配,GC,TLAB(线程私有部分),对象逃逸分析

堆上的缓存区不是共享的

 

 对象没有发生逃逸:对象在方法块中出生与消亡:此时的对象没有在堆上出生,而是优化为在栈上出生与死亡

堆空间结构 

堆空间分为新生代与老年代,永久代虽然属于堆空间,但是目前调优不能影响到它

 

 默认新生代与老年代的比例为1:2

 新生代内 伊甸园:幸存者0:1 = 8:1:1,但是在Visual VM中显示为6:1:1

自适应内存分配策略:UseAdaptiveSizePolicy  

要想是8,需要显示的赋值为8

几乎所有的对象都是在伊甸园中被创造,但是当伊甸园区满的时候有可能在老年区被创造;

 当伊甸园与幸存者1堆满的时候,触发一YGC,标记整理算法,移动到幸存者2区,此时2区也无法存放,直接存储到老年区,此时老年区堆满,触发Fgc,如果此时还放不下,OOM错误

GC

 MinorGC年轻代

MajorGC老年代

FullGC整堆收集

  

 堆中的线程私有部分TLAB

 (进程之间的通信,线程安全问题)

 

         逃逸分析默认已经开启了

 

同步省略

 没用的锁,没用的同步操作就会省略优化

 没有逃逸的对象会被打散在栈上

结论,对象是否都是在堆上的

:逃逸分析,但是没有逃逸的在栈上,但是标量替换了,所以都可以进行解释

:栈上分配,同步省略与标量替换

 总结,堆上的空间分配,GC,TLAB(线程私有部分),对象逃逸分析

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值