寄存器
略。
栈
为一个 临时作用域 分配一块临时存储空间,存储在执行该作用域内代码期间产生的 基本类型变量 和 对象引用变量。当一个变量(基本类型或者对象引用)退出作用域时,分配给它的内存区域会被立即释放掉,释放的空间可以立即分配给其他的变量。
堆
存放通过 .new()
方法创建的 数组 或者 对象。当我们执行例如 String name = String.new("barwe")
时:
- 在 堆 上建立一个匿名的 String 类型的对象;
- 在 栈 上建立一个对象引用变量指向 堆 上的对象。
对象引用变量 是一类普通的变量,它与基本类型的变量类似,在退出作用域时会被立即释放。引用变量指向的数组或者对象存储在 堆 中,即使引用变量被立即释放,堆中的数组或者对象占据的空间并不会被立即回收。只有在没有引用变量指向它们时,它们才能被 垃圾回收器 在将来的某个时间点回收。
堆 是一个 运行时数据区,通过 new
及其类似方法创建的对象会保存在堆中,它们不需要程序显式释放,而是由垃圾回收器自动回收。堆是在程序运行时自动分配大小的,编译时不需要确定对象们的生存周期。
堆的存取速度比栈慢,栈的存取速度仅次于寄存器。
静态域
略。
常量池
略。
评论区