微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

堆栈是堆的一部分还是单独的内存

如何解决堆栈是堆的一部分还是单独的内存

我在看文档

还在baeldung上找到了一张有内存结构的图片

enter image description here

我从文档中了解到:

每个 Java 虚拟机线程都有一个私有的 Java 虚拟机堆栈,与线程同时创建

但我无法理解: 堆栈是堆的一部分还是单独的内存?

解决方法

堆栈是堆的一部分还是单独的内存?

JVM 规范没有说。因此,理论上可以实现一个 JVM,其中线程堆栈位于堆中或单独的(非堆)内存中。

在实践中,所有基于主流 Sun、Oracle 和 OpenJDK 代码库的 JVM 都为线程堆栈使用单独的(非堆)内存。原因之一是,如果垃圾收集器无法重定位堆栈,它会简化 JVM 的内存管理。

但另一方面,它与采用特定 Java 实现的 Java 程序没有区别1


1 - 除了诸如“我是否需要增加堆大小以运行更多线程...”之类的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。