为啥 Java/JVM 实现选择 HEAP 数据结构在内存中存储对象? [复制]

Posted

技术标签:

【中文标题】为啥 Java/JVM 实现选择 HEAP 数据结构在内存中存储对象? [复制]【英文标题】:Why Java/JVM implementation chooses the HEAP datastructure for storing objects in memory? [duplicate]为什么 Java/JVM 实现选择 HEAP 数据结构在内存中存储对象? [复制] 【发布时间】:2019-08-02 21:45:39 【问题描述】:

堆抽象数据结构和存储对象的Java内存区域(堆)之间是否有任何关系。

如果是,为什么 JVM 实现选择堆数据结构将对象存储在内存中。与其他数据结构相比有什么好处?

【问题讨论】:

你做了哪些研究?已经有大量关于这个主题的信息。你读过哪些文章?您对内容有什么困惑? 相关:***.com/questions/660855/… 【参考方案1】:

在这种情况下,“堆”是指为动态内存分配保留的内存区域,而不是数据结构。它们是两个完全不同的概念,它们之间没有任何关系。

【讨论】:

所以jvm栈不是数据结构栈?但都是后进先出的。 @LiLi 另一方面,JVM 堆栈实际上是 LIFO 数据结构堆栈。另请注意,每个 JVM 线程都有一个私有的“JVM 堆栈”,每个帧(在调用方法时创建)都有自己的“操作数堆栈”,同时“堆”在所有 JVM 线程之间共享。您可以在 JVM 规范 docs.oracle.com/javase/specs/jvms/se13/html/jvms-2.html 阅读更多信息

以上是关于为啥 Java/JVM 实现选择 HEAP 数据结构在内存中存储对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 is_heap() 不验证我创建的堆,尽管它在概念上是有效的

Java——JVM内存详解

Java JVM运行时数据区(Run-Time Data Areas)

java JVM内存区域模型

Java -----JVM运行时数据区

计算机内存为啥要有堆栈区?