JVM GC 高频面试题及详细答案(实战向).docxVIP

  • 1
  • 0
  • 约4.91千字
  • 约 7页
  • 2026-10-13 发布于河北
  • 举报

JVM GC 高频面试题及详细答案(实战向).docx

JVMGC高频面试题及详细答案(实战向)

一、基础概念类(初级必问)

1、什么是GC?为什么需要GC?

GC就是垃圾回收,是JVM自动管理内存的机制。程序运行过程中会不断创建对象,用完的对象如果不清理,会一直占用堆内存,时间久了就会导致内存溢出、内存泄漏。

早期C/C++需要开发者手动申请和释放内存,很容易出现忘记释放、重复释放的问题。Java通过GC自动识别无用对象、回收占用内存,让开发者不用手动管理堆内存,提升开发效率同时降低内存出错概率。

简单说,GC的核心作用就是清理无效对象、释放堆内存、保证内存可用、避免OOM。

2、什么样的对象会被判定为垃圾对象?

JVM中没有任何有效引用指向的对象,就是垃圾对象,主要通过两种方式判定:

1)引用计数法

给每个对象添加引用计数器,有新引用指向就+1,引用失效就-1,计数器为0即为垃圾。优点是简单高效、实时性好;最大缺陷是无法解决循环引用问题,所以主流JVM基本不再单独使用。

2)可达性分析法(主流方式)

以GCRoots作为起始节点,顺着引用链遍历,能遍历到的对象就是存活对象,遍历不到的就是垃圾对象。

常见的GCRoots:

虚拟机栈中局部变量表引用的对象

本地方法栈JNI引用的对象

方法区中静态变量、常量引用的对象

正在运行的线程对象

3、简单说下JVM堆内存的分区结构

HotSpotJVM堆内存主要分为年轻代和老年代,默

文档评论(0)

1亿VIP精品文档

相关文档