84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
1.jvm年轻代内存回收 Eden:survivor=8:1
2.采用复制算法 Eden区满后标记后将存活对象房子survivor0里 如下图:
下一次Eden 满了 会将对象放到之前清空的 survivor1的区域里
问:
1.survivor的对象如何被清理 同样是标记-清除/整理算法嘛?
2.对象从年轻代到老年代是经过每次gc时候 还是动态的进入,当达到某一条件晋升?什么条件
学习是最好的投资!
lz你好,之前看到你在我的文章浅析JVM之内存管理下评论了,同时也看到了你的问题。我的文章里面都有提到:
survivor区属于年轻代,用的是复制收集算法
经过数次(默认是15次)在两个Survivor区域移动后还存活的对象最后会被移动到老年代
特别大的对象直接进入老年代
推荐看看《深入理解java虚拟机》。
1.新生代的GC算法几乎都是复制算法,也就是说,survivor也是被复制到老年代中去的。2.对象从新生代到老年代,有几种情况
2.1有一个年龄参数MaxTenuringThreshold用来判断,每次对象熬过一次GC,年龄加1,当到达设定的阈值时,可以进入老年代。 2.2比较大的对象(需要大量连续的内存空间),同样,虚拟机也提供了一个参数PretenureSizeThreshold,可以设置这个值,当对象大于设置值可以直接进入老年代。 2.3如果Survivor空间中相同年龄的对象大小总和大于Survivor空间的一般,则年龄大于或等于该年龄的对象就可以进入老年代。这里是属于动态判定,适应那些内存较小的情况
还有一些其他情况,可以看看书
lz你好,之前看到你在我的文章浅析JVM之内存管理下评论了,同时也看到了你的问题。我的文章里面都有提到:
survivor区属于年轻代,用的是复制收集算法
经过数次(默认是15次)在两个Survivor区域移动后还存活的对象最后会被移动到老年代
特别大的对象直接进入老年代
推荐看看《深入理解java虚拟机》。
1.新生代的GC算法几乎都是复制算法,也就是说,survivor也是被复制到老年代中去的。
2.对象从新生代到老年代,有几种情况
还有一些其他情况,可以看看书