为什么JSR / RET不推荐使用Java字节码?

时间:2011-05-03 14:37:56

标签: java jvm bytecode deprecated opcode

有人知道为什么在Java 6中不推荐使用JSR / RET字节码对吗?

我在网上发现的唯一有意义的解释是,他们通过运行时进行代码分析更难以执行。有谁知道另一个原因?

1 个答案:

答案 0 :(得分:11)

由于松弛了一些正常的字节码约束(例如在进入JSR时具有一致的堆栈形状),JSR和RET使得字节码验证比原本要困难得多。好处很小(在某些情况下可能会稍微小一些),并且验证程序在处理奇怪的JSR / RET模式(以及潜在的安全漏洞以及相关的完整验证运行时成本)方面仍存在困难,这使得它成为一个无用的功能继续拥有。

由于数据的原因而启用的堆栈映射和轻量级验证器在类加载过程中获得了巨大的性能提升,而且不会牺牲安全性。