Java堆区划分—年轻代,年老代,持久代

年轻代(Young Generation):

       所首先新生成的对象都是放在年轻代的。年轻代的目标就是尽可能快速的回收掉那些生命周期短的对象 。

   年轻代分为三个区:一个Eden区,两个Survivor区(一般情况)。大部分对象是在Eden区中生成。当Eden区满了,还存活的对象将被复制到Survivor区中(两个中的一个)。当这个Survivor也满了,此区还存活的对象将被复制到另一个Survivor中,当这个Survivor也满了还存活的对象会被复制到老年代。 当然可以配置多个Survivor增加对象在年轻代的生存时间。

年老代(Old Generation):

  在年轻代经过了N次GC还存活的对象就会被放到老年代。可以认为年老代中存放的都是一些相对生命周期长的对象

持久代(Permanent Generation):

        用于存放静态文件,比如Java类,方法等。持久代对垃圾回收没有显著影响,但是有些应用可能动态生成或者调用一些class。
       方法区也被称为永久代,如果不指定,GC回收的目标仅仅针对方法区的常量池和类型卸载。


注意:JDK8已经废弃了永久代,使用元空间(使用本地内存,而不是用的JVM的);

猜你喜欢

转载自blog.csdn.net/momo_f/article/details/80774889