我在一次面试中被问到了这个问题,但我无法回答。希望你能帮助我。
问题是:为什么Java开发者不添加对结构的支持?为什么不能将堆栈上分配的值类型添加到Java中?
我想以前的java版本应该有一些向后兼容性的问题吧?然而,我无法提出任何建议。
发布于 2013-09-21 02:48:06
虽然Java不允许堆栈分配,但它确实使用了一种称为Escape Analysis的东西。
找到了一个与此相关的链接:http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html
Java语言没有提供任何在堆栈上显式分配对象的方法,但这一事实并不能阻止JVM在适当的地方仍然使用堆栈分配。JVM可以使用一种称为逸出分析的技术,通过该技术,它们可以判断出某些对象在其整个生命周期中都被限制在单个线程中,并且该生命周期受给定堆栈帧的生命周期的限制。这样的对象可以安全地分配在堆栈上,而不是堆上。更好的是,对于小对象,JVM可以完全优化分配,只需将对象的字段提升到寄存器中即可。
发布于 2013-09-21 02:23:36
我认为带有公共变量的class
非常接近于struct
final class Person {
String name;
int age;
}
因此,如果类已经涵盖了这种类型的功能,则不需要添加像structs
这样的功能。
发布于 2013-09-21 02:30:36
如果问题的实质是“为什么不能将堆栈上分配的值类型添加到Java中”,那么答案应该是Java中的数据位于堆中,并在堆栈中通过引用传递(泛型类型除外)。
https://stackoverflow.com/questions/18923300
复制相似问题