我是靠谱客的博主 呆萌银耳汤,最近开发中收集的这篇文章主要介绍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内存分配规则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部