开发者社区> 问答> 正文

在Java虚拟机中,说一下堆栈的区别是什么?

不知道堆栈的区别。

展开
收起
游客toxlrfghuoiyc 2021-10-14 23:28:07 612 0
1 条回答
写回答
取消 提交回答
  • 物理地址

    堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)

    栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。

    内存分别

    堆因为是不连续的,所以分配的内存是在 运行期 确认的,因此大小不固定。一般堆大小远远大于栈。

    栈是连续的,所以分配的内存大小要在 编译期 就确认,大小是固定的。

    存放的内容

    堆存放的是对象的实例和数组。因此该区更关注的是数据的存储

    栈存放:局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。

    2021-10-14 23:29:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
从《阿里巴巴Java开发手册》编写推广谈技术成长 立即下载
如何通过 Serverless 提高 Java 微服务治理效 立即下载