类的加载机制以及jvm的介绍

jvm:
类加载机制:
1.装载:由类加载器来根据文件的全限定名来读取为二进制的字节流
1.1.通过一个类的全限定名获取定义此类的二进制字节流
1.2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
1.3.在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口
2.链接
2.1验证
文件格式验证
元数据验证
字节码验证
符号引用验证
2.2准备
为类的静态变量分配内存,并将其初始化为默认值
2.3解析
把类中的符号引用转换为直接引用
3.初始化
对类的静态变量,静态代码块执行初始化操作
4.使用
5.卸载

类加载器:
1.bootstrap装在javahome的rt包下的
2.extension加载java平台拓展的jar包 加载lib/*下的jar包
3.app classpath下的jar包
4.custom 自定义的包
已经加载的类不再被加载
向上查询 向下委派
向上查询类加载器,当前加载器能不能加载当前类,不能就向下委派
打破双亲委派,自己继承一个类加载器的类重写方法

运行时数据区:
1.方法区:运行时的常量池
2.堆:放类的实例,还有数组
3.虚拟机栈:线程执行区域,存放线程执行的状态,java方法
4.本地方法栈:native方法
5.程序计数器:对java方法记录字节码地址,对native方法放的空

线程运行算法时,通过线程调度算法 分配 时间片

堆区域中,s0区和s1区的内存比为1:1,eden区比s0区比s1区 8:1:1
s0区与s1区

猜你喜欢

转载自blog.csdn.net/sam475259540/article/details/132720607