1.jvm的简单抽象模型:
2.类加载机制
双亲委派模型是为了防止jdk核心类库被篡改,如果需要打破可以重写Classloader.loadClass方法。r
双亲委派模型: 一个类加载器收到一个类的加载请求,他会先判断自身是否已存在该类,如果不存在上抛给上一级类加载器ClassLoader.loadClass()的区别。 类加载器会将所有需要加载的类先传递给上抛,在最顶层开始加载,如果不存在再该类加载器中才会给下一层。 这样做的好处是为了,防止更改核心类库。 自定义加载器,可以打破双亲委派,对ClassLoader.loadClass(),findclassLoad进行重写,因为自定义类加载期中有唯一的类路径 3.运行时数据区:
1. 涉及到分代理论,复制算法,可达性算法,标记清除算法,标记压缩算法,三色标记算法。
4. parNew + cms
增量更新: 当黑色对象插入新的指向白色对象的引用关系时, 就将这个新插入的引用记录下来, 等并发扫描结束之后, 再将这些记录过的引用关系中的黑色对象为根, 重新扫描一次。 这可以简化理解为, 黑色对象一旦新插入了指向白色对象的引用之后, 它就变回灰色对象了。 原始快照 【SATB】: 当灰色对象要删除指向白色对象的引用关系时, 就将这个要删除的引用记录下来, 在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根, 重新扫描一次,这样就能扫描到白色的对象,将白色对象直接标记为黑色(目的就是让这种对象在本轮gc清理中能存活下来,待下一轮gc的时候重新扫描,这个对象也有可能是浮动垃圾)以上无论是对引用关系记录的插入还是删除, 虚拟机的记录操作都是通过写屏障实现的。
5.老年代担保机制
标签:loadClass,对象,扫描,引用,jvm,加载 From: https://www.cnblogs.com/dhdnm/p/16606898.html