文章目录
1、JVM内存空间
为了更好的描述JVM内存空间,Java的开发者、在《Java虚拟机规范》中指出:JVM(运行时数据区)内存共分为JVM栈,堆,方法区,程序计数器,本地方法栈五个部分。
- ①JVM栈(java虚拟机栈,以后说栈指的就是jvm栈):方法的调用是有代价的,方法中有局部变量,各种各样的程序指令,这些东西都需要一个内存空间去存放它们,jvm栈就是用来存放这些方法信息。
所以每调用一个方法,都会有一个存放着该方法信息的栈帧被压入栈中(方法的进栈),每个方法都有自己独立的栈帧,它们是互不影响的。当方法执行结束,存放方法信息的栈帧就没有价值了,它就被销毁了,这个过程称之为方法出栈。
局部变量的生命周期:每当调用方法,该方法栈帧进栈,局部变量就生效了。随着方法调用结束,方法出栈,栈帧销毁,局部变量就没有了。jvm栈是给我们自己定义java方法用的。 - ②本地方法栈:和jvm栈类似,不同的是,它是给本地方法调用使用的。
本地方法:Java去调用C/C++的方法实现一些跟操作系统相关的功能,这些方法都是本地方法。本地方法不是java代码写的,我们不关系它的实现原理。 - ③方法区:面向对象详细解释,方法区主要存放类型的相关信息。
- ④程序计数器:工具人,jvm逐行执行class字节码文件,需要有个指示器,指示当前行数。
2、Java程序在JVM的存放过程与运行
2.1、引用数据类型的数组动态初始化