Java 内存分配以及堆栈的区别

Java基础部分需要简单的了解Java虚拟机的内存管理机制,我在这里简单的记录堆栈方法区的作用和存储内容,适合小白,如果有兴趣想更深入的学习或者说你对Java有一定的了解,请跳转:Java内存管理机制

Java内存分配:

  • 栈:存储局部变量
  • 堆:存储new出来的数组或对象
  • 方法区:里存储着class文件的信息和动态常量池,class文件的信息包括类信息和静态常量池。
  • 本地方法区:和系统相关
  • 寄存器:给CPU使用

在.java文件编译后的.class文件在加载到内存中时,会根据不同的数据被分配到不同的区域来进行存储。

栈是先进后出,栈中存在栈帧,数据进出栈的过程是压栈和弹栈的过程,首先主方法压进栈底,其它方法继续压栈,等其它方法都执行完毕最后弹出主方法释放。

例如:我们创建一个int[] arr = new int[3];

Java虚拟机首先会在堆中申请可以存储int值的连续的三块空间,然后默认将数组值初始化为0,并为每个元素创建一个索引,接下来在栈中创建一个arr变量,然后将堆中的数组地址存储到arr中,将arr引用和实际的数组关联起来,这样就可以通过arr访问到该数组,通过索引访问到数组中的每个元素。

猜你喜欢

转载自blog.csdn.net/weixin_44296929/article/details/107079407
今日推荐