面试八股——JVM★

类加载

类加载器的定义
类加载器的类别
类装载的执行过程

类的装载过程:

加载:

验证:

准备:

这里设置初始值并不是传统意义的设置初始值(那个过程在初始化阶段)。

解析:

初始化:

使用:

类的回收(被垃圾器回收)

回收时机
垃圾定位------可达性分析法

可作为GC root的对象:

垃圾回收算法
标记清除算法
标记整理算法

先将存活对象移动到一起,然后清楚边界之外的垃圾。

优点:解决了内存碎片化问题。缺点:效率低。

复制算法

开辟了一块新的内存空间,将存活对象按序复制过去,然后直接清空原来的内存空间。

优点:克服内存碎片化问题+效率较高。

缺点:需要两块内存空间,内存使用率低。

分代回收
回收过程

java8开始,堆空间被分为了新生代与老年代。

新创建的对象都要被存在Eden区:

GC种类
小结
垃圾回收器的类型
串行垃圾回收器

创建一个垃圾回收线程串行回收垃圾。

并行垃圾回收器(JDK8默认)

创建多个垃圾回收线程进行垃圾回收。

CMS(并发垃圾回收器)
G1垃圾回收器(JDK9之后默认,使用复制算法)
新生代的回收
并发标记阶段
混合收集阶段

其不仅会回收部分老年区,还回去回收其他的区,只要其回收价值够高。(左图为回收前,右图为回收后,将回收的区域集体复制到某些区域后,清楚待收集的地区。)

结束之后,开启新的新生代回收、并发标记、混合收集的循环阶段。

回收失败

如果上述回收方法赶不上对象新建方法,则会采用FULL GC(回收所有区域的垃圾)回收

强、软、弱、虚引用的回收

小结
相关推荐
代码山河34 分钟前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
Escalating_xu2 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅2 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路2 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
AntsData3 小时前
用 12K+ 条亚马逊评论信号,定位机械键盘下一版该改什么
java·大数据·计算机外设
code2cat3 小时前
【随笔】连续批处理:长短请求怎样在迭代之间补位
java·人工智能·后端·大语言模型·vllm
最强小杰3 小时前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
Flynn Liang3 小时前
Spring AI 2.0 深度解析:ChatClient、Advisor 链与 MCP——Java 工程师的 AI 落地最优解
java·人工智能·spring·大模型·架构设计·spring ai
灿飞3 小时前
Kotlin与Java虚拟机六:基础与类型系统:一切皆对象,但对象有代价
java·kotlin
计算机毕设定制辅导-无忧学长4 小时前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统