- 1
- 0
- 约4.91千字
- 约 7页
- 2026-10-13 发布于河北
- 举报
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堆内存主要分为年轻代和老年代,默
您可能关注的文档
- jQuery 笔试真题(含详细答案).docx
- jQuery测试题及详细答案.docx
- jQuery高频面试题及详细答案(实战版).docx
- jQuery前端高频面试题及详细答案(实战完整版).docx
- jQuery与AJAX基础知识试题(含详细答案).docx
- JS 对象高频面试题(附详细真实面试风答案).docx
- JS 高频编程面试题(含详细实操答案).docx
- JS 高频算法面试题(含详细真实面试版答案).docx
- JS 视频面试高频题及详细答案(实战口语版).docx
- JSON 常见面试题及详细答案(实战接地气版).docx
- 2023版ESC糖尿病合并心血管疾病管理指南解读.pptx
- 2023版ESC心力衰竭诊疗指南核心更新.pptx
- 2023+WHF建议:超声心动图在Chagas病中的应用.pptx
- 2023版ESC心力衰竭指南更新要点解读.pptx
- 2023版ESC糖尿病合并心血管疾病管理指南.pptx
- 2023+多学科共识声明:SARS-CoV-2感染后择期手术时机及风险评估(更新版).pptx
- 2023版NCDC医疗机构传染病防控责任清单.pptx
- 2023版NHC患者安全专项行动方案(2023-2025年).pptx
- 2023+国际专家共识声明:种系SDHD致病突变患者嗜铬细胞瘤和副神经节瘤的管理.pptx
- 2023版NHC健康中国行动—心脑血管疾病防治行动实施方案(2023—2030年).pptx
原创力文档

文档评论(0)