Java基础部分需要简单的了解Java虚拟机的内存管理机制,我在这里简单的记录堆栈方法区的作用和存储内容,适合小白,如果有兴趣想更深入的学习或者说你对Java有一定的了解,请跳转:Java内存管理机制
Java内存分配:
- 栈:存储局部变量
- 堆:存储new出来的数组或对象
- 方法区:里存储着class文件的信息和动态常量池,class文件的信息包括类信息和静态常量池。
- 本地方法区:和系统相关
- 寄存器:给CPU使用
在.java文件编译后的.class文件在加载到内存中时,会根据不同的数据被分配到不同的区域来进行存储。
栈是先进后出,栈中存在栈帧,数据进出栈的过程是压栈和弹栈的过程,首先主方法压进栈底,其它方法继续压栈,等其它方法都执行完毕最后弹出主方法释放。
例如:我们创建一个int[] arr = new int[3];
Java虚拟机首先会在堆中申请可以存储int值的连续的三块空间,然后默认将数组值初始化为0,并为每个元素创建一个索引,接下来在栈中创建一个arr变量,然后将堆中的数组地址存储到arr中,将arr引用和实际的数组关联起来,这样就可以通过arr访问到该数组,通过索引访问到数组中的每个元素。