摘要: 1、启动类加载器(引导类加载器,Bootstrap ClassLoader) 这个类是使用C/C++语言实现的,嵌套在JVM内部,它用来加载Java的核心库(JAVA_HOME/jre/lib/rt.jar、resource.jar或sun.boot.class.path路径下的内容)。 它并不继承 阅读全文
posted @ 2020-08-28 18:18 Eleanor123 阅读(293) 评论(0) 推荐(1) 编辑
摘要: Java虚拟机对class文件采用的是按需加载的方式,当需要使用该类时才会将它的class文件加载到内存生成class对象。加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,是一种任务委派模式。 工作原理: 如果一个类加载器收到了类加载请求,它并不会自己先去加载 阅读全文
posted @ 2020-08-27 18:58 Eleanor123 阅读(150) 评论(0) 推荐(1) 编辑
摘要: JVM支持两种类型的类加载器,引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。Java的核心类库都是使用引导类加载器进行加载的,例如String类就是用引导类进行加载的。 自定义类加载器一般指程序中由开发人员自定义的一类 阅读全文
posted @ 2020-08-27 18:02 Eleanor123 阅读(312) 评论(0) 推荐(1) 编辑
摘要: Java程序对类的使用方式分为:主动使用和被动使用。主动使用分为七种情况: 创建类的实例 访问某个类或接口的静态变量,或者对该静态变量赋值 调用类的静态方法 反射 初始化一个类的子类 Java虚拟机启动时被标明为启动类的类 JDK7开始提供的动态语言支持:java.lang.invoke.Metho 阅读全文
posted @ 2020-08-27 15:35 Eleanor123 阅读(204) 评论(0) 推荐(1) 编辑
摘要: 加载: (1) 通过一个类的全限定名获取定义此类的二进制字节流。 (2) 将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构。 (3) 在内存中生成一个代表该类的java.lang.class对象,作为方法区这个类的各种数据访问入口。 加载class文件的方式: (1)从本地系统中直接加载 阅读全文
posted @ 2020-08-27 15:02 Eleanor123 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识。Classloader只负责class文件加载,具体是否可以运行由ExecutionEngine决定。 加载类信息存放于一块方法区的内存空间,除此外,方法区还存放运行时常量池信息,可能还有字符串字面量和 阅读全文
posted @ 2020-08-27 14:07 Eleanor123 阅读(137) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2020-08-26 18:16 Eleanor123 阅读(98) 评论(0) 推荐(1) 编辑
摘要: 一、虚拟机的启动 Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。 二、虚拟机的执行 一个运行的java虚拟机有一个明确的任务:执行java程序。 程序开始执行时它才运行,程 阅读全文
posted @ 2020-08-26 13:58 Eleanor123 阅读(82) 评论(0) 推荐(1) 编辑
摘要: Java编译器输入的指令流基本是一种基于栈的指令集架构,除此还有一种是基于寄存器的指令集架构。两者区别如下: 基于栈式架构的特点: (1)设计和实现简单,适用于资源受限的系统 (2)避开了寄存器分配难题:使用零地址指令方式分配。 (3)指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集 阅读全文
posted @ 2020-08-25 19:45 Eleanor123 阅读(182) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2020-08-25 19:30 Eleanor123 阅读(92) 评论(0) 推荐(1) 编辑