robovm可以在堆栈而不是堆上分配本地方法对象吗?

时间:2014-11-27 15:38:19

标签: llvm heap-memory robovm stack-memory

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

但是,在java中,所有对象都在堆上分配,甚至是对方法完全本地的对象,并且永远不会泄漏到方法之外。

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

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

此致

1 个答案:

答案 0 :(得分:0)

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