校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > jvm内存结构
题目

说一下虚拟机栈和堆的区别?

解答

① 物理地址方面的区别:
堆 的物理地址分配对对象是不连续的。因此性能慢些。
虚拟机栈 使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。
② 内存分配方面的区别:
堆 因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。一般堆大小远远大于虚拟机栈。
虚拟机栈 是连续的,所以分配的内存大小要在编译期就确认,大小是固定的。
③ 存放的内容方面的区别:
堆 存放的是对象的实例和数组。因此该区更关注的是数据的存储。
虚拟机栈 存放的是局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。
注:静态变量放在方法区,而静态的对象还是放在堆。
④ 线程共享方面的区别:
堆 对于整个应用程序都是共享、可见的。
虚拟机栈 只对于线程是可见的。所以也是线程私有。他的生命周期和线程相同。

C 0条回复 评论

帖子还没人回复快来抢沙发