JVM系列(一):Java虚拟机(JVM)概述
2021-03-02 22:29
标签:生成 env 有关 runtime 编程 文件格式 载器 mac 搜索 一、JVM概念 Java虚拟机:Java Virtual Machine(JVM)是一个抽象的计算模型,相对于实体计算机,它是一个虚拟的环境,有自己的指令集和执行引擎,可以在运行时操控内存区域。 目的:为在JVM之上运行的应用程序,提供一个运行环境。可以开发自己的JVM。 二、类文件格式 1. JVM不关心编程语言的语法,而是关注类文件*.class,类文件*.class与Java面向对象中的类结构没有关系 2. *.java文件->编译器->*.class类文件,包含字节码->JVM执行->底层平台执行(OS和硬件) 三、JVM vs C/C++ 1. Java编译器是半编译,只编译为类文件;C/C++编译器会直接编译成二进制文件 2. Java不需要改代码,编译一次就在不同平台上执行;C/C++在不同平台上,需要被平台的编译器重新编译 3. 虽然Java编译器生成的类文件是平台无关的,但是JVM是与特定平台相关的,每个平台有自己的JVM 四、JVM vs JRE vs JDK 1. JRE:Java Runtime Environment,Java运行的标准环境,是JVM的一个实现,每一个在JRE上运行的java程序都会创建一个JVM实例,通过类加载器加载到运行环境中 2. JDK:Java Develop Kit,Java开发的最小环境,包含JRE,也就是开发环境要包含运行环境 五、类加载器Class Loader加载过程 1. 加载含有字节码的类文件和标准Java类文件,标准Java类文件位于/jre/lib目录下 2. 扩展机制定位扩展的类库,扩展类位于/jre/lib/ext目录下 3. 如果要加载的类没有在标准类库和扩展类里,加载器会搜索CLASSPATH环境变量下定义的文件路径 六、内存分类 1. 堆Heap:用于存储动态或临时分配的内存空间,类和数组是在堆里创建的,当超出堆的可用内存空间时,会引发GC 2. 栈Stack: 用于存储局部变量和方法调用的临时结果,每一次方法调用会创建一个栈 3. 方法区:JVM线程间的共享存储区 4. 寄存器:用于执行字节码指令 七、JVM功能 1. 加载:通过类加载器加载类文件 2. 链接:链接类文件,交给JVM运行时执行 3. 初始化:分配内存和调用构造方法设置初始值 参考资料:http://www.importnew.com/25438.html JVM系列(一):Java虚拟机(JVM)概述 标签:生成 env 有关 runtime 编程 文件格式 载器 mac 搜索 原文地址:https://www.cnblogs.com/june0816/p/6397246.html
文章标题:JVM系列(一):Java虚拟机(JVM)概述
文章链接:http://soscw.com/index.php/essay/59239.html