初识jvm

标题一直想知道jvm的内部运作是怎样的,今天就想自己记录下来自己对jvm的认识

1.jvm概念

jvm是什么,根据英语单词的话就是 Java Virtual Machine,中文为java虚拟机,而java虚拟机就是运行在操作系统之上的,与硬件没有关系,jvm它包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收,堆和一个存储方法域。

2.jvm的流程图

先在网上下载的要给流程图
初识jvm_第1张图片
因为java的文件并不够被机器识别,而是要进行编译为class文件才能够被机器所识别。所以jvm就是充当一个媒介,也就是jvm负责把java的源文件进行编译为class文件(就是把java编译为机器码之类的),而后再把class文件通过类加载器加载到内存中,而在jvm加载到内存之前,jvm会根据每一个平台的编译器进行编译成这个平台所要的机器码,所以这就是java为什么会支持跨平台操作了。

3.什么是字节码指令集

字节码指令集,在我的理解中就是i对应的就是int,f对应的就是float,d对应的就是double等等,当然,这只是对于与数据类型相关的一些,在数组之类的,就会编译为对象。

4.寄存器

它是存储速度最快的,位于处理器的内部,寄存器是由编译器来进行分配的,而开发人员不能够通过代码来进行操作。

5.栈

首先,栈的思想一般都是先进后出,在java中,有本地方法栈和虚拟机栈
5.1本地方法栈
与虚拟机栈的作用是一样的,只不过虚拟机栈是服务 Java 方法的,而本地方法栈是为虚拟机调用 Native 方法服务的;
5.2虚拟机栈
于存储局部变量表、操作数栈、动态链接、方法出口等信息;

6.垃圾回收

在java中,程序员是不需要手动释放内存的,而是由jvm去自动的释放内存,在虚拟机空闲或者堆内存不足时,就会触发垃圾回收

7.堆

堆在物理地址中,对象的内存分配是不连续的,堆中一般存储的是对象或者数组,一般静态的对象是在堆中。

总结

第一次了解jvm,还有很多不懂的地方,如果又啥问题,还望多多支持,互相进步。

你可能感兴趣的:(java,jvm)