Java内存划分5个部分
-
栈(Stack):存放的是方法的局部变量,方法的运行一定要在栈当中
局部变量: 方法的参数或方法内部变量
作用域:一旦超出作用域,立刻会从栈内存中消失 -
堆(Heap):凡是new出来的东西,都在堆里
堆内存里的东西都有一个地址:16进制
如果是整数 默认为0
如果是浮点数 默认为0.0
如果是字符 默认为’\u0000’
如果是布尔值 默认为false
如果是引用类型 默认为null -
方法区(Method Area):存class相关信息,包含方法的信息
-
本地方法栈(Native Method Stack): 与操作系统有关
-
寄存器(pc Register):与CPU相关
下面以图为例:
图一
图二
两张图都在解释内存的分布和关系,区别在于图二的arrayB的初始化是=arrayA,没有new,也就没有开辟一个新的内存空间,所以arrayB和arrayA的内存地址是一样的,修改其中一个数组的某个值,另一个数组会跟着变。