首页 > 其他分享 >jvm

jvm

时间:2022-08-19 23:33:43浏览次数:62  
标签:loadClass 对象 扫描 引用 jvm 加载

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

相关文章

  • Java虚拟机原理:JVM为什么被称为机器(machine)? 节选
    JVM主要由类加载器、运行时数据区、执行引擎三个部分组成。(➕类加☁运数......
  • VSCode中Java项目启动设置JVM栈参数。
    发生缘由学习JVM中栈溢出,因此需要启动项目的时候修改一下JVM栈的参数。环境介绍电脑系统:win10jdk:1.8.0_144JVM:JavaHotSpot(TM)64-BitServerVM(build2......
  • JVM查看内存使用状况
    1、jps:查看本地正在运行的java进程和进程ID(pid)2、jinfopid,查看指定pid的所有JVM信息1)jinfo-flagspid查询虚拟机运行参数信息。2)jinfo-flagnamepid,查询......
  • JVM常用配置参数说明
    堆设置-Xms256M:初始堆大小256M,默认为物理内存的1/64-Xmx1024M:最大堆大小1024M,默认为物理内存的1/4,等于与-XX:MaxHeapSize=64M-Xmn64M:年轻代大小为64M(JDK1.4后支持),相当于......
  • 一文带你弄懂 JVM 三色标记算法!
    大家好,我是树哥。最近和一个朋友聊天,他问了我JVM的三色标记算法。我脑袋一愣发现竟然完全不知道!于是我带着疑问去网上看了几天的资料,终于搞清楚啥事三色标记算法,它是用......
  • JVM总结——类文件相关
    类文件内容魔数主次版本号常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合什么是属性表集合字段表和方法表分别用于描述一个字......
  • Arthas基础和JVM相关命令-jad/watch/jvm/sysprop/sysenv/vmoption/getstatic/ognl
    1.jad:反编译指定已加载类的源码jadcom.lyb.web.mySpringBoot.thread.ThreadAppendData 2.watch:函数执行数据观测watchorg.apache.lucene.util.RamUsageEstim......