- JVM把内存分为五块:栈、堆、方法区、本地方法区、寄存器
- 当函数被调用时,函数内部的局部变量在栈中开辟内存,当局部变量的作用域结束时,立刻释放栈中所占据的内存。
栈
- 栈的特点:先进后出
- 当函数被调用时,为函数在栈中开辟内存;
- 局部变量或语句(for语句)中定义的变量是在栈中开辟内存的;
- 局部变量的作用域结束了则立刻释放内存。
堆
-
对象、数组是在堆中开辟内存的
-
特点:
- 在堆中开辟内存,有默认值;
- 没有引用指向时就成了垃圾,要等待垃圾回收线程回收,不会立刻释放内存
变量
- 变量的作用域:从变量定义的位置开始,到其所在的大括号结
生命周期
- 从局部变量开辟内存到释放内存这个阶段称为变量的生命周期
- 函数的参数也是局部变量