JVM
2021-01-27 13:52:46 8 举报
JVM基于JDK1.8
作者其他创作
大纲/内容
扩展类加载器
Car car
Class 1类信息类型的常量池字段信息方法信息类变量、类方法指向类加载器的引用指向Class实例的引用方法表
.class
JVM JDK1.8
Class ... N类信息类型的常量池字段信息方法信息类变量、类方法指向类加载器的引用指向Class实例的引用方法表
虚拟机已加载的类信息
元空间(属于堆,使用本地内存,不占用堆内存)Metaspace
父类没有该类 再往下以此让子类加载器 加载
根类加载器
执行引擎Excution Engine
new
本地方法接口 (JNI)Java Native Interface
New一个对象时
Heap 堆(线程共享)
Full GC(重GC)
0X456
堆中一定会存在垃圾所谓的JVM调优99%都是在推区去处理
地址引用
getClassLoader()
程序计数器Program Counter Register
Metaspace 元空间span style=\"font-size: inherit;\
类加载器:1、虚拟机自带的类加载器2、根类加载器3、扩展类加载器4、用户(系统)类加载器子父类关系,根为父类以此至下
类加载器Class Loader
To(幸存区)
新生代Young Gen
常量池
老年代OldGen
From(幸存区)
类加载(加载、链接、初始化)
通过Native调用底层C语言接口
堆Heap Area
getClass()
类加载器Class Loader( Car.class )
第一个获取到 AppClassLoader第二个通过getParent()获取到 ExtClassLoader第三个再通过getParent()获取到 null (由于根类加载器是C++写的所以获取不到)
堆
类进来,先从最顶层父类加载器开始查询有无该类,有进行加载
本地方法库
car1car2car3
Car.class
.java
本地方法栈 Native Method Stack
Car被加载时的类信息
用户类加载器
Eden(伊甸园区)
main方法
Class模板对象( Car Class )
双亲委派机制
栈
GC(轻GC)
new Car()...name=\"xxx\"
运行时常量池
元空间(方法区)Metaspace
car1.getClass().getClassLoader().getParent().getParent()
java栈Stack Area
方法区占用元空间很少内存
......
new Car(1)new Car(2)new Car(3)
元空间方法区
其他信息
已加载类的常量信息
0 条评论
下一页