JVM基础知识
JAVA程序执行过程
JVM全称Java Virtual Machince,也就是Java虚拟机。它是跨语言的(语言无关性),它能识别.class后缀的文件,并且能够解析它的指令,最终条用操作系统上的函数,完成我们想要的操作。
一个java程序的运行必须经过编写、编译和运行3个阶步骤。
1、编写:是指在 Java 开发环境中进行程序代码的输入,最终形成后缀名为 .java 的 Java 源文件。
2、编译:是指使用 Java 编译器对源文件进行错误排査的过程,编译后将生成后缀名为 .class 的字节码文件。
3、运行:是指使用 Java 解释器将字节码文件翻译成机器代码,执行并显示结果。
即:首先经过javac编译成.class文件(字节码文件,它是一种和任何具体机器环境及操作系统环境无关的中间代码,是一种二进制文件,它必须由专用的 Java 解释器来解释执行)。然后JVM将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数(native),JVM作为.class文件的翻译存在,输入字节码,调用操作系统函数。
过程即:Java文件–>编译器–>字节码–>JVM–>机器码。
JVM整体知识模块
1、JVM作用:jvm从软件层面屏蔽不同操作系统在底层硬件的不同。同时JVM是一个虚拟化的操作系统,类似于Linux或者Windows的操作系统,只是他在操作系统上,接受字节码(.class),把字节码翻译成操作系统上的机器码进行执行。
2、JVM 能涉及非常庞大的一块知识体系,比如内存结构、垃圾回收、类加载、性能调优、JVM 自身优化技术、执行引擎、类文件结构、监控工具等,如下图。 但是在所有的知识体系中,都或多或少跟内存结构有一定的关系: 比如垃圾回收回收的就是内存、类加载加载到的地方也是内存、性能优化也涉及到内存优化、执行引擎与内存密不可分、类文件结构与内存的设计有关系,监控工具也会监控内存。所以内存结构处于 JVM 中核心位置。也是属于我们入门 JVM 学习的最好的选择。 同时 JVM 是一个虚拟化的操作系统,所以除了要虚拟指令之外,最重要的一个事情就是需要虚拟化内存,这个虚拟化内存就是我们常说的 JVM 的内存区域。请看后续更新。。。