java面试题---JVM之垃圾回收

本文探讨了Java中垃圾回收的重要性,介绍了JVM的三种GC类型:Minor GC、Major GC和Full GC。讲解了可达性分析算法作为判断对象可回收的主要方式,以及GC Roots的构成。还阐述了对象回收的确认过程、Finalizer线程的角色以及垃圾回收的基本步骤。最后,概述了多种垃圾回收器,如serial、parNew、parallel scavenge、CMS和G1,它们各自的特点和适用场景。
摘要由CSDN通过智能技术生成
  1. 为什么要进行垃圾回收?

    创建的对象没用时也不进行回收的话,堆内存很快就会被消耗殆尽,所以需要把一些没有用的对象清理掉。

  2. JVM GC 分为哪几种?

    分为三种,对新生代进行的垃圾回收叫 minor GC,也叫YGC;对老年代进行的垃圾回收叫 major GC;同时对新生代和老年代进行的垃圾回收叫 full GC,简称 FGC。

  3. 如何判断一个对象是否可以被回收?

有两种方法判断对象是否可回收,引用计数法和可达性分析算法。

引用计数法就是维护一个计数器,有引用指向对象时就加一,引用失效时就减一,引用为零就可以被回收。主流的 JVM 并没有采用这种方式,因为很难解决循环引用问题;
可达性分析算法是通过一系列 GC Roots 根节点集作为起始节点,从这些节点根据引用关系向下搜索,搜索过程中经过的路径称为引用链。如果一个对象到 GC Roots 之间没有任何引用链,那么这个对象就称为不可达,就可以被回收。主流 JVM 采用的就是这种方式。

  1. 哪些对象可以当作 GC Roots?

    系统类对象,也就是 jdk 自带的类的对象;
    native 方法引用的对象;
    活动线程正在引用的对象;
    正用于加锁的锁对象。

  2. 不可达的对象会被立即回收吗?

    不会,一个对象至少要两次判断为不可达才会进行回收,如果第一次判断为不可达,第二次又可达,那这个对象就会复活。

  3. 确定一个对象是要被回收的,那接下来如何怎么处理&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值