Java的内存需要划分为5个部分:
-
栈(Stack): 存放的都是方法中的局部变量(方法的运行一定要在栈当中运行)
- 局部变量:方法的参数,或者是方法{}内部的变量
- 作用域: 一旦超出作用域,立刻从栈内存当中消失
-
堆(Heap): 凡是new出来的东西,都在堆里面
- 堆内存里面的东西都有一个地址值:16进制
- 堆内存里面的数据,都有默认值,规则:
- 如果是整数 默认为0
- 如果是浮点数 默认为0.0
- 如果是字符 默认为’\u0000’
- 如果是布尔 默认为false
- 如果是引用类型 默认为null
-
方法区(Method Area): 存储.class的相关信息,包含方法的信息
-
本地方法栈(Native Method Stack): 与操作系统相关
-
寄存器(pc Register): 与CPU相关
一个数组内存图:
两个数组内存图: