JVM内存分区图文
首先看图,JVM内存里面主要干一下三件事,我们从这三件事展开,了解并掌握JVM内存分区:

方法区(元数据空间)
jdk1.8之前叫做方法区,主要放".class"文件加载进来的类,还有一些类似的常量池的东西。jdk1.8以后,改名为"Metaspace"-元数据空间。

程序计数器
我们写好的java代码会编译成字节码文件,包含各种字节码指令,然后字节码才能被JVM字节码执行引擎,一条条的去执行。
我们JVM支持多个线程,我们的代码会开启多个线程并发的执行不同的代码,每个线程都有一个程序计数器,单独记录当前对应线程执行到哪一条字节码指令了。

Java虚拟机栈(栈区)
JVM必须有一块区域是来保存每个方法的局部变量的,这个区就是栈区。
每个线程对应一个栈区,每一个线程执行了一个方法,就会创建对应方法的栈桢,压入栈底,同时,该方法里面也会存放包含在方法里面的局部变量之类的数据。以此类推,方法执行完毕则出栈。

Java堆内存(堆区)
我们在堆区存放的一个局部变量是用来存放该变量new出来对象的地址,所有new出来的对象都在堆区。

总结:
- 加载类进入内存,存放在方法区
- 然后有一个主线程执行类中的main方法,通过程序计数器关联记录。
- main方法执行,压入栈底,之后的方法依次压入
- 方法执行过程中,需要创建实例对象,栈桢中存放局部变量,堆区存放new出来的具体对象实例,局部变量存放该实例的地址。
- 方法执行完依次弹出栈
本文详细介绍了JVM内存的四个主要分区:方法区(元数据空间)、程序计数器、Java虚拟机栈(栈区)和Java堆内存(堆区)。方法区存储类信息和常量池,程序计数器记录线程执行的字节码指令位置,虚拟机栈保存每个方法的局部变量,堆区则用于存放对象实例。理解这些内存分区对于优化Java应用的性能至关重要。
-JVM内存分区图文&spm=1001.2101.3001.5002&articleId=111189261&d=1&t=3&u=a669b314c3c242c2b02745523ad529a7)
8040

被折叠的 条评论
为什么被折叠?



