java程序划分5个内存空间
栈:存放的是局部变量 分为虚拟机栈和方法栈
StackOverflowError 栈溢出 线程请求的栈深度大于虚拟机所允许的深度
大部分虚拟机允许动态扩展
OutOfMemoryError 扩展时无法申请到足够多的内存
堆:存在的是所有new出来的东西
方法区:
本地方法区:和操作系统有关
寄存器:CPU使用
堆内存的特点:
1 每个new出来的东西都有地址值
2 每个变量都有默认值
byte short int long 0
float double 0.0
char '\u0000'
boolean false
所有引用类型 null
3 使用完毕就变成垃圾,但是并没用立即回收
类执行顺序
静态代码块>代码块>构造方法
多态 父类 =new 子类()
成员变量 编译看左边,运行看左边
成员方法 因为有方法重写覆盖 编译看左边,运行看右边 也就是该方法 父类子类都有,子类重写了
静态方法 与类有关, 编译看左边,运行看左边
栈:存放的是局部变量 分为虚拟机栈和方法栈
StackOverflowError 栈溢出 线程请求的栈深度大于虚拟机所允许的深度
大部分虚拟机允许动态扩展
OutOfMemoryError 扩展时无法申请到足够多的内存
堆:存在的是所有new出来的东西
方法区:
本地方法区:和操作系统有关
寄存器:CPU使用
堆内存的特点:
1 每个new出来的东西都有地址值
2 每个变量都有默认值
byte short int long 0
float double 0.0
char '\u0000'
boolean false
所有引用类型 null
3 使用完毕就变成垃圾,但是并没用立即回收
类执行顺序
静态代码块>代码块>构造方法
多态 父类 =new 子类()
成员变量 编译看左边,运行看左边
成员方法 因为有方法重写覆盖 编译看左边,运行看右边 也就是该方法 父类子类都有,子类重写了
静态方法 与类有关, 编译看左边,运行看左边