美文网首页
java的ClassLoader。运行时栈帧结构

java的ClassLoader。运行时栈帧结构

作者: 狸猽猂 | 来源:发表于2018-07-12 11:49 被阅读0次

ClassLoader是用来动态的加载class文件到虚拟机中,并转换成java.lang.class类的一个实例,每个这样的实例用来表示一个java类,我们可以根据Class的实例得到该类的信息,并通过实例的newInstance()方法创建出该类的一个对象。

二、JVM平台提供三层classLoader

1.Bootstrap classLoader:采用native code实现,是JVM的一部分,主要加载JVM自身工作需要的类,如java.lang.*、java.uti.*等; 这些类位于$JAVA_HOME/jre/lib/rt.jar。Bootstrap ClassLoader不继承自ClassLoader,因为它不是一个普通的Java类,底层由C++编写,已嵌入到了JVM内核当中,当JVM启动后,Bootstrap ClassLoader也随着启动,负责加载完核心类库后,并构造Extension ClassLoader和App ClassLoader类加载器。

2.ExtensionClassLoader:扩展的class loader,加载位于$JAVA_HOME/jre/lib/ext目录下的扩展jar。

3.AppClassLoader:系统class loader,父类是ExtClassLoader,加载$CLASSPATH下的目录和jar;它负责加载应用程序主函数类。加载当前用户类路径classpath上的所指定的类。

双亲委派


一个类加载器查找class和resource时,是通过“委托模式”进行的,它首先判断这个class是不是已经加载成功,如果没有的话它并不是自己进行查找,而是先通过父加载器,然后递归下去,直到Bootstrap ClassLoader,如果Bootstrap classloader找到了,直接返回,如果没有找到,则一级一级返回,最后到达自身去查找这些对象。这种机制就叫做双亲委托。

二。


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

    在编译代码的时候,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定了,并且写入到了方法表的Code属性中,因此一个栈帧需要分配多少内存,不会受到程序运行期变量数据的影响,而仅仅取决于具体虚拟机的实现。

    对于执行引擎来讲,活动线程中,只有虚拟机栈顶的栈帧才是有效的,称为当前栈帧(Current Stack Frame),这个栈帧所关联的方法称为当前方法(Current Method)。

相关文章

  • java的ClassLoader。运行时栈帧结构

    ClassLoader是用来动态的加载class文件到虚拟机中,并转换成java.lang.class类的一个实例...

  • 虚拟机的方法调用和字节码执行

    目录 一、运行时栈帧结构二、方法调用三、方法执行 一、运行时栈帧结构 栈帧是用于支持虚拟机进行 方法调用 和 方法...

  • Java虚拟机——运行时栈帧结构

    运行时栈帧结构 Java虚拟机以方法作为最基本的执行单元,栈帧(Stack Frame)则是用于支持虚拟机进行方法...

  • 深入理解java虚拟机(七)-虚拟机字节码执行引擎

    本文基于周志明的《深入理解java虚拟机 JVM高级特性与最佳实践》所写。特此推荐。 运行时栈帧结构 栈帧是用于支...

  • 虚拟机字节码执行

    一、运行时栈帧结构 栈帧是用于支持虚拟机方法调用和方法执行的结构,栈帧存储了方法的局部变量表,操作数栈,动态链接,...

  • 虚拟机字节码执行引擎

    运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。...

  • 字节码执行机制

    运行时帧栈结构 帧栈 是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素...

  • 虚拟机字节码执行引擎

    运行时栈帧结构 栈帧(Stack Frame)是用于虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区...

  • 2020-10-10---第八章---虚拟机字节码执行引擎

    1.运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时...

  • JVM字节码执行引擎

    一、运行时栈帧结构 栈帧(Stack Frame)是用于JVM执行方法调用和方法执行的数据结构,是虚拟机栈的元素。...

网友评论

      本文标题:java的ClassLoader。运行时栈帧结构

      本文链接:https://www.haomeiwen.com/subject/osvlpftx.html