JVM 基于堆栈的内存管理的已知尝试

Known attempts at stack-based memory management for the JVM

我正在阅读不同的 JVM 实现,我想知道为什么 stack-based memory management isn't more widespread (not to be confused with escape analysis)。你们中有人熟悉使用基于堆栈的内存管理编写 JVM 的尝试吗?

这不太实用。

一旦有了多线程,就需要在线程之间共享对对象的引用。这意味着线程需要保存对其他线程堆栈的引用,并且一旦最初创建对象的方法 returns.

这些就会失效

堆实际上是一个进程中的所有线程都可以看到的共享内存区域,因此任何需要被多个线程看到的对象自然都在那里。

另一种说法是堆栈是线程私有的,而堆是它们之间共享的。