Java类加载器 & Java垃圾回收方式

本文介绍了Java类加载器的工作原理及其分类,包括引导类加载器、扩展类加载器、系统加载器和自定义加载器。同时,文章还详细解释了Java垃圾回收的基本算法——复制算法和标记清理算法,以及各种垃圾收集器的特点,如SerialNew、ParallelNew、ParallelScavenge、ParallelOld、CMS和G1收集器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]1.Java类加载器[/b]

按加载的顺序分为
A 引导类加载器 Boostrap Classloader
加载jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类

B 扩展类加载器 Extension Classloader
加载jre/lib/*.jar或-Djava.ext.dirs指定目录下的jar包

C 系统加载器 System(App) Classloader
加载classpath中指定的jar包及目录中class

D 自定义加载器 Customer Classloader
应用程序根据自身需要自定义的ClassLoader,如tomcat会根据j2ee规范自行实现ClassLoader

[b]2.Java垃圾回收方式[/b]

两个最基本的Java回收算法:复制算法&标记清理算法
Java实行分代回收(新生代和年老代:新生代基本采用复制算法,老年代采用标记整理算法)

A 复制算法
两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
B 标记清理算法
一块区域,标记要回收的对象,然后回收,出现碎片,进行碎片整理,整理出更大的内存放更大的对象

1.Serial New/Serial Old
Serial/Serial Old收集器是最基本最古老的收集器,它是一个单线程收集器,并且在它进行垃圾收集时,必须暂停所有用户线程。Serial New收集器是针对新生代的收集器,采用的是Copying算法,Serial Old收集器是针对老年代的收集器,采用的是Mark-Compact算法。它的优点是实现简单高效,但是缺点是会给用户带来停顿。
2.Parallel New
Parallel New收集器是Serial收集器的多线程版本(参照Serial New),使用多个线程进行垃圾收集。
3.Parallel Scavenge
Parallel Scavenge收集器是一个新生代的多线程收集器(并行收集器),它在回收期间不需要暂停其他用户线程,其采用的是Copying算法,该收集器与前两个收集器有所不同,它主要是为了达到一个可控的吞吐量。
4.Parallel Old
Parallel Old是Parallel Scavenge收集器的老年代版本(并行收集器),使用多线程和Mark-Compact算法。
5.CMS
CMS(Current Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,它是一种并发收集器,采用的是Mark-Sweep算法。
6.G1
G1收集器是当今收集器技术发展最前沿的成果,它是一款面向服务端应用的收集器,它能充分利用多CPU、多核环境。因此它是一款并行与并发收集器,并且它能建立可预测的停顿时间模型。

参考URL:[url]https://www.nowcoder.com/questionTerminal/795b066b67c84478aec4dc400b3d0153[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值