为了账号安全,请及时绑定邮箱和手机立即绑定

iload_1,iload_2,iload_3和iload #index字节码有什么区别?

iload_1,iload_2,iload_3和iload #index字节码有什么区别?

眼眸繁星 2021-04-16 19:42:01
iload #index的方式与其他3个字节代码不同。两者之间是否有任何性能差异。
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

iload #index的方式与其他3个字节代码不同。

iload_1 _2 _3使用一个字节的字节码。另一种形式使用2。

两者之间是否有任何性能差异。

仅间接地。在大多数情况下,它没有什么区别,但是有些性能调整指标是基于字节码字节数的。例如是否内联方法。稍长的方法可能意味着未执行某些优化。

例如,即使不经常调用,用于内联方法的度量标准也为35个字节。如果代码使用的是iload#而不是iload_1,则可能意味着它的长度略大于35个字节,而不是略少且没有内联。


查看完整回答
反对 回复 2021-04-28
?
慕容708150

TA贡献1831条经验 获得超4个赞

启动新线程时,JVM为该线程创建新堆栈,并且当线程调用Java方法时,虚拟机将创建一个新框架并将其推送到该线程的Java堆栈上。堆栈帧由三部分组成:局部变量,操作数堆栈,帧数据

局部变量被组织为从零开始的单词数组。

这些iload_1,iload_2,iload_3是局部变量数组的入口级别。因此,iload_1表示引用局部变量数组的第一个索引。类似地,iload_2和iload_3分别表示引用局部变量数组的第二和第三索引。

因此,在这些iload_1,iload_2和iload_3中没有特定的区别,而是引用局部变量数组中的相应索引。


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 578 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信