【发布时间】:2014-10-23 01:56:19
【问题描述】:
我读到一些地方,有时 JVM 会识别一些对象并尝试在堆栈中创建它而不是在堆中创建它,因为堆栈上的内存分配比堆中的内存分配便宜,堆栈上的释放是空闲的,堆栈是由运行时有效地管理。 那么堆栈中的这种对象分配是如何工作的,有没有办法强制 JVM 这样做?
【问题讨论】:
-
没有人无法控制 JVM 的 oplects 放置策略。无法将持久性数据放入堆栈,因为堆栈上的数据将在某些类执行后释放。
-
请注意,即使最终发生堆栈分配,它也只会对检测为“热”且值得 JIT 编译的代码路径执行此操作。
-
当人们使用诸如 Java 之类的 VM 平台时,它总是让我感到困惑,它非常小心地向您隐藏这些低级细节,这样您就可以专注于重要的事情(应用程序),然后他们想要无论如何都要关心这些细节。如果您想要控制,请不要使用基于 VM 的高级平台,例如 Java。
标签: java jvm heap-memory stack-memory