一.Java内存分配介绍
JVM虚拟机会在内存中执行程序
java内存分配介绍
方法区,栈,堆
首先将编译过后的.class文件送入方法区中。当类开始运行时将方法调入栈内存中,变量也是属于方法的,因此同方法一起进入栈内存中。当main方法要执行时,其实是将main方法提到栈里面运行的。new出来的东西在堆中开辟空间并产生地址(数组,对象) 。
二.程序运行原理
1. 首先会将class文件提取到方法区中,class文件中有main方法
2.会将main方法加载到栈中来执行(方法在栈中执行)
3.执行基本类型的变量,会在栈中开辟变量a的空间
4.首先会在栈内存中开辟变量arr的空间(仅存储数组地址),由于是数组是new出来的对象,所以会在堆内存中开辟一块空间存储数组
5.打印arr,由于arr变量存储的是地址,因此会打印出数组地址出来
6.arr[1]通过arr变量中存储的数组地址找到堆中的数组,从而打印出堆中的第二个元素
7.更新数组对象:通过arr中的数组地址找到堆中的数组对象从而分别将他们修改
8.打印数组内容,根据arr中的地址找到数组并将其内容打印出来