概述
1、对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC(执行前会判断是否是执行full gc 还是 minor gc)
2、大对象(需要大量连续内存空间的对象)直接进入老年代。这样可以避免大对象在Eden和Survivor之间来回的拷贝
3、长期存活的大对象进入老年代。在survivor区的对象每经过一次minor gc存活下来,年龄就加1。等到年龄达到阈值后(hotspot默认15)就进入老年代
4、动态判断对象的年龄。也就是说在新生代的对象不一定要年龄达到阈值才会进入老年代。当同一个年龄的对象的数量大于survivor区的对象的总量的一半时,
大于等于这个年龄的对象都进入老年代(什么时机进入老年代?minor gc的时候吗)
5、空间分配担保。每次进行minor gc的时候jvm都会计算从survior区进入老年代的对象的大小是否大于老年代的剩余空间,如果大于就只进行minor gc 不然就进行 full gc
最后
以上就是呆萌银耳汤为你收集整理的java内存分配规则的全部内容,希望文章能够帮你解决java内存分配规则所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复