JVM基础知识

JVM从编译到执行

JVM基础知识

 

JAVA 程序执行过程

 

一个Java程序,首先经过编译成.class文件,然后JVM将其加载到方法区。执行引擎会执行这些字节码文件。执行时,会翻译成操作系统相关的函数。JVM作为翻译.class文件的存在。输入字节码,调用操作系统函数。

过程:JAVA文件—>编译器—>字节码-->机器码。

JVM全称JAVA Virtual Machine,也就是我们常说的JAVA虚拟机。虚拟机只识别class文件,并且可以把class文件解析成机器阅读的机器码,从而完成我们想要的操作。

JVM基础知识

JRE,JRK,JVM的关系

JVM是翻译官,把class文件翻译成机器读得懂的机器码。JVM不会自己生成代码,需要手动编写。并且在编译过程中需要依赖很多类库。这就需要JRE。

JRE是除开JVM外,还为我们提供了相当多的类库jar包。它提供了许多已经封装好的功能,包括IO,SOCKET等等。至此,已经构成了java的运行环境。

但对于程序员来说,仅仅只是运行环境仍然不够,我们需要一个开发环境去编写代码。此时JDK提供了许多工具,包括运行,发布,调试以及反汇编工具。

 

总结:JVM的核心作用,从软件的角度排除了不同软件与不同系统之间的不兼容问题。

 

从跨平台到跨语言

 

跨平台性

可以通过jdk的不同工具翻译成统一的class语言,对于jvm来说读取的东西是一样的,因此体现了语言无关性。

JVM基础知识

语言无关性

不同的操作系统需要下载不同版本的jdk。因此可以将字节码翻译成对应系统的机器语言,因此体现了语言无关性。

 

JVM的发展历史

JVM基础知识

 

了解即可,在目前来说主要使用的虚拟机是Hotspot虚拟机。

 

JVM整体知识模块

JVM基础知识

 

JVM涉及到非常庞大的知识体系,如内存结构,垃圾回收,类加载,性能调优,JVM自身优化技术,执行引擎,类文件结构,监控工具等,但是所有知识体系都一定与内存结构有关系。

垃圾回收是针对内存,类加载也是加载到内存中,性能优化涉及到内存优化,执行引擎与内存密不可分,类文件结构与内存的设计有关,监控工具也会监控内存,所以内存结构处于JVM的C位,因此第一个拉出来学。

 

JVM的本质其实就是一个虚拟的操作系统。除了虚拟化指令之外,还有一个重点就是虚拟化内存。虚拟化内存就是即将讲到的JVM内存区域。