所以我对 Java 比较陌生,刚刚阅读了 this关于逃逸分析的非常有趣的维基百科文章。然而,它唯一提到使用堆栈分配是当对象没有逃脱方法调用时。这似乎有些有限;但话又说回来,我想不出任何其他时候我会想要将对象分配到堆栈。所以我想知道:
1) 是否还有其他时间将对象分配到堆栈有意义?
2)有没有办法手动将对象分配到堆栈,而不是堆?
2.5)如果有的话,这样做会更快吗(对于不逃逸该方法的对象),而不是让逃逸分析必须弄清楚它?或者有什么方法可以告诉Java“在这个方法中,我需要每个对象都在堆上,不要费心去尝试看看是否有任何对象可以在堆栈上”?
谢谢!
最佳答案
- 是的。如果合适的话。你熟悉递归吗?如果没有,请参见 1。
- 新字符串(“Foo”)
2.5...什么?你为什么要尝试这样优化编译阶段?重点是什么?
关于Java手动堆栈分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342558/