Java字节码 "FRAME FULL"和 "FRAME APPEND"之间的区别

标签 java bytecode

“FRAME FULL”和“FRAME APPEND”有什么区别? 我检查了两种使用迭代器的方法:

int size = 0;
Iterator<String> it = l.iterator();
while (it.hasNext()) {
    String s = it.next();
    int length = s.length();
    size += length;
}

int size = 0;
for (String s : l) {
        int length = s.length();
        size += length;
}

它们都使用迭代器,但字节码有点不同。

最佳答案

当操作数堆栈为空且当前局部变量与前一帧中的局部变量相同(除了定义了 k 个附加局部变量)时,使用帧类型append_frame。当所有其他类型都不适用时,使用帧类型 full_frame,它也是不太紧凑的类型。

关于Java字节码 "FRAME FULL"和 "FRAME APPEND"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7039326/

相关文章:

java - 从未加载的 java 类中获取字节码

java - 在 UWP C++ 应用程序中生成 JVM 时崩溃

java - 从 java 代码打开命令提示符并运行一些命令并读取 cmd 提示符显示?

java - 现在在 Java 中进行静态分派(dispatch)、字节码生成代理的最佳方法是什么?

java - 如果JVM生成机器代码,那么代码文件在哪里?

java - getstatic 在字节码中的真正含义是什么?

c# - 是时候将技能转移到 java 和资源上了

java - 如何访问另一个类引发的异常

java - Servlet PrintWriter 输出流真的需要关闭吗?

java - 抛出 vs Java 字节码