在C,I可以分配的寄存器为一个变量,例如:

register int i = 0;

我知道,Java是一种解释语言,并且是从CPU许多许多抽象了。

是否有任何可供甚至要求(如果架构不允许它,所以什么),我的变量保持在寄存器中,而不是移动缓存或机构主内存?

我不认为有什么办法,但我一直惊喜了。

感谢您,

有帮助吗?

解决方案

没有,有没有办法在Java中注明。但是,也有一些东西,你可以这样做将防止从寄存器被使用,如施加volatile改性剂的一个成员变量。

其他提示

register在C不把一个变量来注册。它只是给出了编译器的提示,它可能会是很好的把它变成一个寄存器。

在爪哇没有等价的。

如果它的使用在足够短的空间使它寄存器INT将是值得的,则该热点编译器应该能够明白这一点本身。

事实上,热点编译器应该能够做得比C / C ++编译器更好的工作,因为它有更多信息的工作。 C / C ++编译器必须猜测;热点可以测量

有在Java中没有等价物。甚至用C也不能保证该变量将被存储在寄存器中并编译器可以自由地将其忽略。

在Java中,方法将被解释,直到热点JIT启发式地确定它需要编译。为编译的代码,它使用的着色算法的变量和临时值分配给寄存器或从RAM中的寄存器的溢出的情况下,写入/

  

我知道,Java是一种解释   语言,是很多很多   抽象远离CPU。

您非常有回答了自己的问题: - )

但严重的是,在一般情况下,编写代码的明明白白,你可以和JVM将竭尽所能来对待你的代码的权利。

您可以创建一个名为注释,但@Register的JVM肯定会忽略它。 e.g。

@register int i = 0;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top