概念检查:Java的仅堆内存分配模型并不意味着它没有函数调用堆栈,对吧?

Aar*_* Fi 3 java memory-management

我对这里的"绝对"程度感到有点困惑.

我知道C++中的内存分配可以通过堆或堆栈完成.我知道Java的内存分配只能通过堆来完成.

基本上,以下是正确的吗?

"Java没有基于堆栈的内存分配[程序员可以直接访问]"不应该与"Java仍然使用函数调用堆栈来实现函数调用,就像所有其他语言一样".

http://en.wikipedia.org/wiki/Stack-based_memory_allocation http://en.wikipedia.org/wiki/Dynamic_memory_allocation

jjn*_*guy 7

Java在调用堆栈上保存本地原语.所以,并非一切都在堆上.

Java和C++的内存模型之间的主要区别在于,在Java中,您无法选择保存对象的位置,Java会为您决定.

  • 不仅是本地原语,还包括对象的引用.但是对象本身总是在堆中分配. (2认同)