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

1.Java类加载器

按加载的顺序分为
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

2.Java垃圾回收方式

两个最基本的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: https://www.nowcoder.com/questionTerminal/795b066b67c84478aec4dc400b3d0153

猜你喜欢

转载自leozam.iteye.com/blog/2389731