Java内存分析


数组变量属于引用类型, 数组本身就是对象, java 中对象是在堆中的

 


Java 程序在运行时, 需要在内存中分配空间, 为了提高运算效率, 就对空间进行了不同区域的划分, 因为每一片区域都有特定的处理数据方式和内存管理方式

栈: 存放局部变量

堆: 存储的是所有 new 出来的东西

方法区: 后面讲

本地方法区: 和系统相关

寄存器: 给 cpu 使用

 

栈内存的数据用完就释放掉(脱离了它的作用域才会释放)

 

堆内存的特点:

  • 每一个new 出来的东西都有地址值

  • 每个变量都有默认值(byte short int log -> 0, float double -> 0.0, char -> '\0000', 就是一个空字符, boolean -> false, 引用类型 -> null

  • 使用完毕就变成了垃圾, 但是并没有立即回收, 会在垃圾回收器空闲时回收

 

 

方法的加载也是在栈中