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

2022-09-04 21:29:40

有谁知道为什么JSR / RET字节码对在Java 6中被弃用?

我在网上找到的唯一有意义的解释是,他们使运行时的代码分析更难执行,执行速度更慢。有谁知道另一个原因吗?


答案 1

JSR 和 RET 使得字节码验证比由于一些正常字节码约束的松弛(例如在进入 JSR 时具有一致的堆栈形状)而变得更加困难。好处是非常小的(在某些情况下可能稍微小一些的方法),验证器在处理奇怪的JSR / RET模式(以及潜在的安全漏洞,以及完全验证的相关运行时成本)方面的持续困难使其成为一个无用的功能。

堆栈映射和由于数据而启用的轻量级验证器在类加载期间赢得了巨大的性能,而不会牺牲安全性。


答案 2

推荐