虚拟机把描述类的数据从class文件加载到内存,并对数据进行校检、转换解析和初始化,最终形成可已被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。
类的加载、连接和初始化过程都是在程序运行期间完成的,这样虽然会令类加载时稍微增加一些性能开销,但是会为java应用程序提供高度灵活性,java语言运行期类加载的特性。
类从被加载到虚拟机内存中开始,到卸载出内存为止,他的整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载7个阶段,其中验证,准备,解析3个部分统称为连接,

堆分为:新生代(1个eden、2个surivor)、老年代
方法区:永生代
分配担保:老年代

虚拟机中第一个被执行的< clinit >()方法的类肯定是java.lang.Object

双亲委派模型 一种启动类加载器(bootstrap classLoader),这个类加载器使用C++语言实现,是虚拟机的一部分;另一种就是所有其他的类加载器,这些类加载器都由java语言实现,独立于系统外部,并且都是继承自抽象类java.lang.ClassLoader.

栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈,的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始到执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐