JVM(二):JVM分代


JVM分代

概念:JVM根据对象存活周期不同,把堆内存划分为几块。新生代、老年代、永久代。

分代原因:堆内存存放对象实例,是JVM管理的内存中最大一块,也是垃圾回收最频繁的一块。分代是为了提高对象内存分配和垃圾回收的效率。

分代原则:

  新生代:新创建的对象。会被频繁得GC(垃圾回收)。

      新生代分为三块,Eden(占内存80%),From survivor(占内存10%),To survivor(占内存10%),原因是hotspot采用复制算法回收新生代,这样可以充分利用内存空间,减少浪费。

      处理流程:

        1. 判断该对象是否是大对象,大对象直接进入老年代

             2. 如果不是大对象,会存储在Eden区。To survivor是空的

             3. 执行GC , Eden和From survivor区中存活下来的对象存在To survivor区

             4. From survivor和To survivor调换身份。这样To survivor又是空的了。

      

  老年代:新创建的对象。经过了多次GC依然存活。不会频繁做GC。

  永久代:静态属性、类信息。一般不做GC

示意图:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM