美文网首页
5、聊聊JVM分代模型:年轻代、老年代、永久代

5、聊聊JVM分代模型:年轻代、老年代、永久代

作者: 呢看了看 | 来源:发表于2020-11-21 16:20 被阅读0次

            大部分在我们代码里的创建出来的对象,其实都是存活周期很短的,这种对象,在我们写的java代码里,占到了绝大部分的比例。

             那种被类的静态变量长期引用的对象,需要长期停留在Java堆内存里,这种对象就是生存周期很长的对象,他是轻易不会被垃圾回收的,他需要长期存在,不停的使用它。


            JVM将Java堆内存划分为了两个区域:一个是年轻代,一个是老年代。年轻代就是那种创建和使用立马就要回收的对象放在里面。老年代就是创建之后需要一直长期存在的对象在里面。

            为什么要区分年轻代和老年代?因为这个跟垃圾回收有关,对于年轻代里的对象,特点是创建之后很快被回收,所以需要一种垃圾回收算法。对于老年代里的对象,他们的特点是需要长期存在,所以需要另外一种垃圾回收算法。

            什么是永久代?JVM里的永久代就是我们之前所说的方法区。所谓的永久代,可以认为就是放一些类信息的。            


    方法区内会不会进行垃圾回收?

    以下几种情况,方法区里的类会被回收

    【1】首先该类的所有实例对象都已经从Java堆内存里被回收

    【2】其次加载这个类的ClassLoader已经被回收

    【3】该类的Class对象没有任何引用

    相关文章

      网友评论

          本文标题:5、聊聊JVM分代模型:年轻代、老年代、永久代

          本文链接:https://www.haomeiwen.com/subject/ysvrxktx.html