iload #index与其他3个字节代码的区别。它们之间在性能上有什么区别。
答案 0 :(得分:6)
iload #index与其他3个字节代码的区别。
iload_1 _2 _3使用一个字节的字节代码。另一种形式使用2。
它们之间是否有任何性能差异。
仅间接地。在大多数情况下,它没有什么区别,但是有些性能调整指标是基于字节码字节数的。例如是否内联方法。稍长的方法可能意味着未执行某些优化。
例如内联方法(即使不经常调用)的度量标准是35个字节。如果代码使用的是iload#而不是iload_1,则可能意味着它的长度略大于35个字节,而不是略少且没有内联。
答案 1 :(得分:1)
启动新线程时,JVM为该线程创建一个新堆栈,并且当线程调用Java方法时,虚拟机将创建一个新框架并将其推送到该线程的Java堆栈上。 堆栈框架由三部分组成:局部变量,操作数堆栈,框架数据。
局部变量被组织为从零开始的单词数组。
这些iload_1,iload_2,iload_3是局部变量数组的入口级别。因此,iload_1表示引用局部变量数组的第一个索引。类似地,iload_2和iload_3分别表示引用局部变量数组的第二和第三索引。
因此,这些iload_1,iload_2和iload_3并没有特定的区别,而是引用了局部变量数组中的相应索引。