面试八股——JVM★

类加载

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

类的装载过程:

加载:

验证:

准备:

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

解析:

初始化:

使用:

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

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

可作为GC root的对象:

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

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

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

复制算法

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

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

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

分代回收
回收过程

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

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

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

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

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

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

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

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

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

回收失败

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

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

小结
相关推荐
程序猿_极客21 分钟前
【2025 年最新版】Java JDK 安装与环境配置教程(附图文超详细,Windows+macOS 通用)
java·开发语言·windows·macos·jdk
猫头虎28 分钟前
macOS 双开/多开微信WeChat完整教程(支持 4.X 及以上版本)
java·vscode·macos·微信·编辑器·mac·脚本
二哈喇子!4 小时前
Java开发工具——IDEA(修改全局配置,提升工作效率)
java·编辑器·intellij-idea
强子感冒了4 小时前
Java网络编程学习笔记,从网络编程三要素到TCP/UDP协议
java·网络·学习
二哈喇子!4 小时前
SpringBoot项目右上角选择ProjectNameApplication的配置
java·spring boot
sin22014 小时前
MyBatis的执行流程
java·开发语言·mybatis
二哈喇子!4 小时前
基于Spring Boot框架的车库停车管理系统的设计与实现
java·spring boot·后端·计算机毕业设计
二哈喇子!4 小时前
基于Spring Boot框架的网络游戏虚拟交易平台的设计与实现
java·springboot·毕设项目
二哈喇子!4 小时前
JAVA环境变量配置步骤及测试(JDK的下载 & 安装 & 环境配置教程)
java·开发语言
二哈喇子!4 小时前
Java框架精品项目【用于个人学习】
java·spring boot·学习