3月16日Java笔记

 GC【垃圾回收】 *** 面试 +工作 

 heap + metaspace 

 1.什么是垃圾? 
    没有引用指向的对象

GC: 
    1.哪些对象要被回收    which
    2.什么时候被回收    when
    3.采用什么方式回收    how

1.哪些对象要被回收    which
    1.引用计数法【了解】
        给对象添加了一个引用计数器,引用一次 +1 引用失效 -1 
        计数器0 说明这个对象可以被回收 

        缺点: 
            循环引用 ,会导致 这个对象回收不了 

            Obejcet a = new Object(); +1
            Obejcet b = new Object(); +1
            a.xxx=b  +1 
            b.xxx=a  +1
            a.xxx=b  +1 

            a =>2
            b =>3 

            a=null     a =>1
            b=null  b =>2 

    2.根节点可达性分析

什么是GCroot?
    1.栈
    2.方法区
    3.native stack


2.when +how
采用什么方式回收?
    1.理论:=》 gc算法 
    2.落地:=》垃圾收集器 

 gc算法: 
    1.标记清除: mark-sweep 
        标记: 标记哪些对象要被清除【根节点可达性分析】
        清除:垃圾对象进行清除

        缺点: 内存碎片
        stop the world =》 stw 暂停应用

    2.标记整理: 
        标记: 标记哪些对象要被清除【根节点可达性分析】 进行清除
        整理:移动活的对象 进行内存整理

    3.复制:
        1.把内存分成大小相同的两片
        2.浪费了一些内存 
        3.没碎片

对象: 
    夭折:90% 
    老不死的:old   0-15  15 这个对象是足够的老
    不灭的:class 、pool

年轻代参数:
    -Xmnsize  =》 年轻代 
    XX:SurvivorRatio=ratio  =》 8:1:1 

垃圾收集器 :
    1.串行垃圾收集器
    2.并行垃圾收集器
    3.并发垃圾收集器
    4.G1垃圾收集器【比较复杂】

1.串行垃圾收集器
    1.一个线程处理垃圾回收
    2.stw  
        app=>gc=>app 

2.并行垃圾收集器
    1.多个线程处理垃圾回收
    2.比 串行垃圾收集器 stw时间短

3.并发垃圾收集器
    你的程序线程 和 gc线程 并发执行
    没有stw


分代算法: 
    年轻代  老年代
1.年轻代
    1.年轻代:串行 
        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseSerialGC

        DefNew 年轻代 串行垃圾回收器
        Tenured 老年代 串行垃圾回收器打印

    2.年轻代:ParNew(并行)
        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseParNewGC

        ParNew 年轻代 并行垃圾回收器
        Tenured 老年代 串行垃圾回收器打印

    3.年轻代:Parallel Scavenge(并发)  jinfo 

        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseParallelGC

        PSYoungGen 年轻代 并发垃圾回收器
        ParOldGen 老年代 并行垃圾回收器

    注意: 
        可以从单单 一个方面入手 eg:年轻代  老年代的gc 就确定了

2.老年代

    1.老年代:串行 【用不了】
        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseSerialOldGC【参数没有找到】
    

    2.老年代:Parallel old(并行)
        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseParallelOldGC

        PSYoungGen 年轻代 并发垃圾回收器
        ParOldGen 老年代 串行垃圾回收器打印

    3.CMS(并发标记清除)
        1.目的 
            gc =》 停顿的时间比较短

        -Xms5m -Xmx5m -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC

        ParNew 年轻代 并发垃圾回收器
        CMS 老年代 cms垃圾回收器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java笔记是由北京大学青鸟教育推出的一款专门针对Java语言的学习工具。它以全面、系统、实践为特点,通过详细的代码示例和清晰的讲解,帮助学习者全面掌握Java编程语言。 Java笔记采用了线上与线下相结合的学习模式。学员可以通过手机、平板电脑、电脑等设备在线学习,还可以在学习过程中随时记录自己的学习笔记。同时,北大青鸟还为学员提供线下实践环境,学员可以在实验室里亲自动手实践所学知识,加深理解和应用。 Java笔记的内容非常全面,包括了Java语言的基本语法、面向对象编程、异常处理、流操作、多线程、数据库操作等众多知识点。除了理论知识,Java笔记还提供了大量的实例代码,可供学员参考和模仿。这样的学习方式既帮助学员理解Java的基本概念,又能让他们运用所学知识解决实际问题。 与此同时,Java笔记还注重学员的互动交流。在学习过程中,学员可以利用笔记功能记录学习心得和疑惑,还可以在论坛上与其他学员进行讨论和交流。这种互动形式既能促进学员之间的学习互助,也能更好地帮助学员理解和应用所学知识。 总之,Java笔记是北大青鸟推出的一款专注于Java语言学习的工具,通过系统的课程设置、丰富的实例代码和互动交流的方式,帮助学员全面掌握Java编程知识,提升编程能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值