【发布时间】:2014-08-03 23:08:10
【问题描述】:
我最近一直在查看Java Virtual Machine Specifications (JVMS) 以试图更好地了解是什么让我的程序正常工作,但我发现了一个我不太了解的部分......
4.7.4 部分描述了 StackMapTable 属性,并且在该部分该文档详细介绍了堆栈映射框架。问题是它有点罗嗦,我最好通过例子来学习;不是通过阅读。
我知道第一个堆栈映射框架是从方法描述符派生的,但我不明白如何(应该解释为here。)另外,我不完全理解堆栈映射框架的作用。我会假设它们类似于 Java 中的块,但看起来好像你不能在彼此内部拥有堆栈映射框架。
无论如何,我有两个具体问题:
- 堆栈图框有什么作用?
- 第一个堆栈地图框是如何创建的?
还有一个一般性问题:
- 谁能提供一个比 JVMS 中给出的解释更简洁、更容易理解的解释?
【问题讨论】:
-
@EJP 这是我正在做的事情。这是我决定首先阅读 JVMS 的主要原因之一。
-
@EJP 我也一直在阅读JVM规范,相信我,这不仅仅是阅读规范,例如:了解类型验证如何工作的部分(与此相关问题)你需要有 Prolog 编程的基本知识......所以我认为这个问题/答案值得在 Stackoverflow 中提出
-
@morgano,我发现忽略 Prolog 的东西并专注于经典推理验证器会更有帮助。新的验证器非常相似,他们只是决定在 Prolog 的 200 页中指定它,而不是像旧的那样使用模糊的英文描述
-
@Antimony 确切地说,这就是这个问题的目的,将正式规范翻译成简单的英语。
-
我已经尝试在这里全面解释它们volatileinterface.com/…
标签: java jvm bytecode stack-frame