“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;
}
他们都使用迭代器,但字节码有点不同。
答案 0 :(得分:2)
当操作数堆栈为空且当前局部变量与前一帧中的局部变量相同时,使用帧类型append_frame,除了定义了k个其他局部变量。当所有其他类型都不适用时,使用帧类型full_frame,它也不那么紧凑。
答案 1 :(得分:1)
第一个版本有一个显式的迭代器名称,即一个局部变量。框架显示局部变量组的开始和结束。我假设完全意味着它描述了所有局部变量,追加意味着它正在添加额外的局部变量。