首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java有堆和堆栈吗?

Java有堆和堆栈吗?
EN

Stack Overflow用户
提问于 2011-11-26 18:42:09
回答 2查看 474关注 0票数 0

http://courses.washington.edu/css342/zander/css332/arch.html

页面底部:

C++内存模型与Java模型不同。在C++中,内存来自两个位置:运行时堆栈和内存堆。

这读起来好像Java没有堆(或堆栈)?

我正在努力学习Java和C++的所有“帽下”细节。

EN

回答 2

Stack Overflow用户

发布于 2011-11-26 18:45:11

Java使用堆内存模型。所有对象都是在堆上创建的;引用用于引用它们。

它还在处理方法帧时将它们放到堆栈上。

我想说这两者都有。

票数 1
EN

Stack Overflow用户

发布于 2011-11-26 18:50:45

是的,Java有堆(对于整个JVM来说是通用的)和堆栈(每个线程有一个堆栈)。

拥有堆栈和堆更多的是实现的属性,而不是语言的属性。

我甚至可以说,大多数Linux程序都有堆(通过mmapsbrk系统调用获得)和堆栈(在操作系统级别上,这不依赖于语言)。

Java所拥有的(但通常不是C++ )是一个垃圾收集器。您不需要在Java中释放未使用的内存。但是在C++中,您需要通过调用delete来释放它,对于堆中分配给new的每个C++对象。

但是,请参阅博姆垃圾收集器,以获得在C& C++中可用的GC。它在实践中非常有效(即使它在理论上可能会泄漏,是一个保守的,而不是一个精确的GC)。

一些受限的C++或C环境(特别是没有操作系统内核的嵌入式系统的独立实现)没有任何堆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8280689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档