【问题标题】:Can robovm allocate local method objects on the stack rather than heap?robovm 可以在栈上而不是堆上分配本地方法对象吗?
【发布时间】:2015-01-26 06:19:14
【问题描述】:

在 C (resp. C++) 中,可以在为该函数分配的堆栈帧中分配严格本地的函数(或方法)的数组、结构(或对象)。

然而,在 java 中,所有的对象都分配在堆上,即使是完全属于方法本地并且永远不会泄漏到方法之外的对象。

在某些情况下,能够在堆栈而不是堆上分配此类对象会大大提高效率。

RoboVM 代码生成是否支持此功能,或者将来是否支持此功能?

问候

【问题讨论】:

    标签: llvm heap-memory robovm stack-memory


    【解决方案1】:

    RoboVM 不支持堆栈分配。一些 VM 会进行逃逸分析,以确定某个分配是否是方法的本地分配,并且可以在堆栈而不是堆上完成。我们可能会在未来将其添加到 RoboVM 作为优化,尽管它不是用户可以直接控制的。我知道 IBM 正在试验类似于 .NET 结构的东西:http://www.slideshare.net/mmitran/ibm-java-packed-objects-mmit-20121120。如果这被接受为标准,我们将尝试在 RoboVM 中实现它。

    【讨论】:

    • 感谢您的回答,另外我不知道这个 .NET 功能。我希望这个特性能够进入 Java/Scala 领域。
    猜你喜欢
    • 1970-01-01
    • 2013-05-13
    • 2018-09-09
    • 2014-06-10
    • 2017-02-21
    • 1970-01-01
    • 2013-01-25
    • 2014-10-11
    相关资源
    最近更新 更多