java中的内存分配
栈 (存储的是局部变量)
先进后出
1、存储的是局部变量
2、局部变量就是定义在方法中的变量
3、使用完毕,立即回收
堆 (存储的是new出来的东西)
new出来的通常叫=实体、对象
1、每个对象都有地址值
2、每一个对象的数据都有一个默认值
byte、short、int、long 是0
float、double 是0.0
char 是‘\u0000’
boolean 是false
引用类型 是null
3、使用完毕后,会在垃圾回收器空闲的时候被回收
方法区 ()
本地方法区 (和系统相关)
寄存器 (给cpu使用)
java的内存需要划分成为5个部分
-
栈(stack):存放的都是方法中的局部变量,方法的运行一定要在栈当中。
局部变量:方法的参数,或者是方法{}内部的变量
作用域:一旦超出作用域,立刻从栈内存当中消失
-
堆(heap):凡是new出来的东西,都在堆中
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值,规则
如果是整数 默认为0
如果是浮点数 默认为0.0
如果是字符 默认为'\u0000'
如果是布尔 默认为false
如果是引用类型 默认为null
-
方法区(method area):存储.class相关信息,包含方法的信息。
-
本地方法栈(native method stack):与操作系统相关
-
寄存器(pc register):与cpu相关