我是靠谱客的博主 呆萌银耳汤,这篇文章主要介绍java内存分配规则,现在分享给大家,希望可以做个参考。

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内存分配规则内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部