• GC垃圾回收器和回收算法


    GC垃圾收集算法
    
    堆空间
    
    分代:
    
    年轻代:
        Eden区: 对象创建的区域: gc最频繁,99%的对象都是在这里创建和销毁的,经过一次youngGC,Eden区基本就空了
        Survival区:
            from: 经过一次youngGC,Eden和to区还存活的对象放入from区, from和to区角色互换
            to:  经过一次youngGC,仍然存活的对象和Eden区存活对象一起放入from区,并把存活足够久的对象[默认是15次youngGC]转入老年代
        
        三者占用内存比例:
        Eden:from:to=8:1:1
    
    老年代:
        年老代里存放的都是存活时间较久的,较大的对象,因此年老代使用标记整理算法。当年老代容量满的时候,会触发一次Major GC(full GC),回收年老代和年轻代中不再被使用的对象资源。
    
    永久代: jdk1.8叫元空间
    
    
    
    
    GCRoot:
        1、虚拟机栈中引用的对象!(局部变量表引用的对象)
        2、类中静态属性引用的对象
        3、方法区中的常量
        4、本地方法栈中 Native 方法引用的对象!
    
    
    垃圾收集器:
    
    young:
        DefNew: serial
        ParNew: parNew
        PSYoungGen: parallelScavenge
    
    old:     
        Tenured: serialOld
        ParOldGen: parallelOld
        cms: 已经弃用
    
    young+old: 
        G1垃圾回收器:
            jdk9开始作为默认的垃圾收集器 
            特点: 
                1, 高吞吐量+低延迟
                2, 避免内存碎片
                3, 支持大堆,一个收集器解决堆内存的回收
                4, 可预测的停顿时间
    
    ZGC: 新一代的GC,jdk14开始支持. 低延迟
  • 相关阅读:
    jackson、gson、fastjson
    jackson、gson、fastjson
    Java 常见面试题
    java8的新特性2
    关于mybatis的注释问题
    java PropertyDescriptor 应用及源码分析
    Java 反射总结
    java8的新特性1
    vo、po、dto、bo、pojo、entity、mode如何区分
    倒计时 不加锁 老代码
  • 原文地址:https://www.cnblogs.com/alenblue/p/12890331.html
Copyright © 2020-2023  润新知