jvm

1.jvm的简单抽象模型:

  

 

 

2.类加载机制

    

   双亲委派模型是为了防止jdk核心类库被篡改,如果需要打破可以重写Classloader.loadClass方法。r

 

双亲委派模型: 一个类加载器收到一个类的加载请求,他会先判断自身是否已存在该类,如果不存在上抛给上一级类加载器ClassLoader.loadClass()的区别。    类加载器会将所有需要加载的类先传递给上抛,在最顶层开始加载,如果不存在再该类加载器中才会给下一层。 这样做的好处是为了,防止更改核心类库。 自定义加载器,可以打破双亲委派,对ClassLoader.loadClass(),findclassLoad进行重写,因为自定义类加载期中有唯一的类路径     3.运行时数据区:   

 

  1. 涉及到分代理论,复制算法,可达性算法,标记清除算法,标记压缩算法,三色标记算法。

 

  4. parNew +  cms

 

 

 

增量更新:     当黑色对象插入新的指向白色对象的引用关系时, 就将这个新插入的引用记录下来, 等并发扫描结束之后, 再将这些记录过的引用关系中的黑色对象为根, 重新扫描一次。 这可以简化理解为, 黑色对象一旦新插入了指向白色对象的引用之后, 它就变回灰色对象了。 原始快照 【SATB】:     当灰色对象要删除指向白色对象的引用关系时, 就将这个要删除的引用记录下来, 在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根, 重新扫描一次,这样就能扫描到白色的对象,将白色对象直接标记为黑色(目的就是让这种对象在本轮gc清理中能存活下来,待下一轮gc的时候重新扫描,这个对象也有可能是浮动垃圾)以上无论是对引用关系记录的插入还是删除, 虚拟机的记录操作都是通过写屏障实现的。

 

 5.老年代担保机制

 

相关文章

jinfo 命令可以用来查看 Java 进程运行的 JVM 参数,命令如下...
原文链接:https://www.cnblogs.com/niejunlei/p/5987611.ht...
java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是...
jvm
1.jvm的简单抽象模型:  2.类加载机制     双亲委派模...
堆外内存JVM启动时分配的内存,称为堆内存,与之相对的,在代...
1.springboot和tomcat2.springcloud的请求如何通过网关鉴权?...