java虚拟机在执行的指令不需要加载_JVM复习笔记

1. JVM是什么?

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,

Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上

不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

2. 为什么使用JVM?

在不同平台上运行时不需要重新编译。

3. 与**有什么不同?

4. 骨架

1). Java 虚拟机自带的加载器

a). 根类加载器(Bootstrap): 虚拟机核心类库,java.lang.*等

b). 扩展类加载器(Extension):从java.ext.dirs系统属性所指定的目录加载类库或者从JDK的安装目录jre/lib/ext

c). 系统类加载器(System):classpath

5. 怎么用?

6. 使用注意事项

1). 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。

方法区内是类的二进制数据结构,堆内存中才是Class对象,且Class对象指向方法区中类二进制数据结构。当堆内没有Class对象指向方法区中类二进制数据结构时,该二进制数据将会被卸载。

类的加载的最终产品是位于堆区中的Class 对象。Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

2). 需要指出的是,加载器之间的父子关系实际上指的是加载器对象之间的包装关系,而不是类之间的继承关系。一对父子加载器可能是同一个加载器类的两个实例,也可能不是。在子加载器对象中包装

了一个父加载器对象。

3). 每个类加载器都有自己的命名空间,命名空间由该加载器及所有父加载器所加载的类组成。在同一个命名空间中不会出现类的完整名字(包括类的包名)相同的两个类;在不同的命名空间中有可能会

出现类的完整名字(包括类的包名)相同的两个类。

7. 优化

8. 监控

原文:http://www.cnblogs.com/Jtianlin/p/5200181.html

你可能感兴趣的:(java虚拟机在执行的指令不需要加载_JVM复习笔记)