java - 我们可以向Java添加结构吗?

原文 标签 java struct value-type

我在一次面试中被问到这个问题,无法回答。希望你能帮助我。
问题是:为什么Java人员不添加对结构的支持?为什么不可能将堆栈上分配的值类型添加到Java?
我想以前的java版本应该有一些向后兼容性问题吧?然而,我无法想出任何办法。

最佳答案

尽管Java不允许堆栈分配,但它确实使用了调用转义分析。
找到一个与此相关的链接:http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html
Java语言不提供任何在堆栈上显式分配对象的方法,但这并不妨碍JVM在适当的情况下仍然使用堆栈分配。jvm可以使用一种称为转义分析(escape analysis)的技术,通过这种技术,它们可以知道某些对象在其整个生命周期中都被限制在单个线程中,并且生命周期受给定堆栈帧的生命周期的限制。这样的对象可以安全地分配到堆栈上,而不是堆上。更好的是,对于小对象,jvm可以完全优化分配,只需将对象的字段提升到寄存器中。

相关文章:

java - 在可运行的jar中导出图像不起作用

java - 当方法不返回Option时如何处理空值? [重复]

json - 在GO语言中使用API​​时如何将JSON转换为Go类型定义

c# - C#中的int是什么?

c# - 为什么值类型不能为null

c# - 在.NET中,使用“foreach”迭代IEnumerable <ValueType>的实例会创建一个副本吗?那么我是否应该使用“for”而不是“foreach”?

java - 为什么在Android的ExifInterface上出现File not found错误?

java - Spring Boot说“不支持请求方法'POST'

c - 初始化指向const指针的指针

c++ - 预期静态前的主要表达?常量指针必须使用