在Java的String类中,trim方法包含以下内容:

int off = offset;      /* avoid getfield opcode */
char[] val = value;    /* avoid getfield opcode */

我对“避免getfield操作码”的评论感到困惑。

这是什么意思? (我认为这避免了在字节码中使用getfield,但是为什么这是一件好事[TM]?)

它是为了防止对象创建,以防万一修剪不做任何事情(因此将其返回)还是?

最佳答案

我的猜测是,关键是将值一次复制到局部变量中,以避免在接下来的几行中每次循环迭代时都必须从堆中重复获取字段值。

当然,这引出了一个问题,即为什么没有对“len”局部变量应用相同的注释。 (我也希望JIT无论如何都要避免重新获取,尤其是在变量为final的情况下。)

关于java - 避免getfield操作码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4761681/

10-10 09:59