Java手动堆栈分配

标签 java memory-management escape-analysis

所以我对 Java 比较陌生,刚刚阅读了 this关于逃逸分析的非常有趣的维基百科文章。然而,它唯一提到使用堆栈分配是当对象没有逃脱方法调用时。这似乎有些有限;但话又说回来,我想不出任何其他时候我会想要将对象分配到堆栈。所以我想知道:

1) 是否还有其他时间将对象分配到堆栈有意义?
2)有没有办法手动将对象分配到堆栈,而不是堆?
2.5)如果有的话,这样做会更快吗(对于不逃逸该方法的对象),而不是让逃逸分析必须弄清楚它?或者有什么方法可以告诉Java“在这个方法中,我需要每个对象都在堆上,不要费心去尝试看看是否有任何对象可以在堆栈上”?

谢谢!

最佳答案

  1. 是的。如果合适的话。你熟悉递归吗?如果没有,请参见 1。
  2. 新字符串(“Foo”)

2.5...什么?你为什么要尝试这样优化编译阶段?重点是什么?

关于Java手动堆栈分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342558/

相关文章:

memory-management - 页面故障会导致故障处理重新安排吗?

c - 内存分配如何在极端情况下工作?

java - 简单的 Java 倒数计时器

java - java中的反射

python - 仅在 Spyder IDE 中出现内存错误

java - 逃逸分析疑虑

go - 关于堆栈分配,Go 中的 "small"对象是什么?

.charCodeAt() 的 Java 等价物

java - 确保正确参数类型的 Groovy 最佳/推荐方法