Java虚拟机:
Class Loader:依据特定格式,加载class文件到内存;
Execution Engine:对命令进行解析;
Native Interface:融合不同开发语言的原生库为Java所用;
Runtime Data Area:JVM内存空间的结构模型;
Java反射:
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
类从编译到到执行的过程:
1.编译器将name.java源文件编译为name.class字节码文件;
2.ClassLoader将字节码转换为JVM中的Class<name>对象;
3.JVM利用Class<name>对象实例化为name对象;
ClassLoader:
ClassLoader 在Java中有着非常重要的作用,它主要工作在Class装载的加载阶段,其主要作用是从系统外部获得Class二进制数据流。
它是Java的核心组件,所有的Class都有ClassLoader进行加载,ClassLoader 负责通过将Class文件里的二进制数据流装载进系统,然后
交给Java虚拟机进行连接,初始化等操作。
类加载器的双亲委派机制:
.......
避免多份同样字节码的加载;
LoadClass 和forName的区别;
类的装载过程:
JVM内存模型:
线程私有:
1.程序计数器
2.虚拟机栈
3.本地方法栈
所有线程共享:
1.MetaSpace(类加载信息OOM)
2.堆(数组和类对象OOM)常量池(字面量和符号引用量OOM)
原文:https://www.cnblogs.com/songyuejie/p/12594218.html