Java 03-基础 堆和栈(另,理解Java内存)
概述:
栈区(STACK)堆区(HEAP)
1、栈中主要存放一些基本类型的变量,且每一个基本数据类型有固定的大小(byte,short,int,long,float,double,boolean,char),和引用类型的内存地址
2、堆中主要存放引用类型的数据
3、栈的存取速度比堆快
4、栈的数据可以共享
5、栈的数据大小确定的,堆的数据大小可变的
区别:栈区开辟一块固定大小的空间保存基本类型,堆区开辟一块可变的空间保存引用类型。
引用类型的保存过程:例:String b = “aaa”,
堆区开辟空间保存“aaa”,并且在栈区保存“aaa”的内存地址(例:地址为0x11),0x11记录在堆区保存的位置信息,实现对应关系。
外部寻找“aaa”时,先寻找栈区“aaa”的内存地址,内存地址对应堆区的某一个位置(也就是“aaa”的位置)通过内存地址找到堆区的“aaa”。也就是说引用类型及用了栈区的空间也用了堆区的空间,而基本数据类型只需要在栈区存取就行
深入理解: