知乎网站开发用的语言,wordpress 淘宝模板,网站302跳转,电脑网站视频怎么下载一、java中的内存结构如何划分 栈和堆的区别#xff1a;
栈负责处理运行#xff0c;堆负债处理存储。
区域名称作用虚拟机栈用于存储正在执行的每个Java方法#xff0c;以及其方法的局部变量表等。局部变量表存放了便器可知长度的各种基本数据类型#xff0c;对象引用
栈负责处理运行堆负债处理存储。
区域名称作用虚拟机栈用于存储正在执行的每个Java方法以及其方法的局部变量表等。局部变量表存放了便器可知长度的各种基本数据类型对象引用方法执行完自动释放堆内存存储对象(包括数组对象)new来创建的都存储在堆空间方法区存储已被虚拟机加载的类信息常量静态变量、即时编译器编译后的代码等数据本地方法栈当程序中调用了native的本地方法底层C的库时本地方法执行期间的内存区域程序计数器程序计数器是CPU中的寄存器它包含每个线程下一条要执行的指令的地址
****例1**1、左边int[]声明的变量**arr**是放在**虚拟机栈**中2、右侧new出来的数组内容是放在**堆内存**中
class TestJvm {public static void main(String[] args) {//左边声明的局部变量arr是放在虚拟机栈右边new出来的内容放在堆空间int[] arr new int[]{1,2,3};}
}举例21、在虚拟机栈创建一个int类型的数组arr1并在内存堆中创建长度为4的空间初始值都为0。arr1指向堆空间的首地址0x12ab2、数组arr1在内存堆中将索引为0的元素设置为1索引为1的元素设置为2。3、在虚拟机栈创建一个String类型的数组arr2并在内存堆中创建长度为2的空间初始值都为null。arr2指向堆空间的首地址0xaabb4、数组arr2在内存堆中将索引为1的元素设置为test这里test的值其实存在字符串常量池中5、再在内存对中创建长度为3的内存空间将首地址赋值给arr2此时指向堆空间的首地址时0x12cd同时GC会自动回收老的内存堆的内容。
class TestArrayJvm {public static void main(String[] args) {int[] arr1 new int[4];arr1[0] 1;arr2[1] 2;String[] arr2 new String[2];arr2[1] test;//重新开辟堆空间将字符串数组赋值给arr2arr2 new String[3];}
}详细教程来源https://zhuanlan.zhihu.com/p/576119507