问题标签 [javap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java字节码类解释
我了解基本的 Java 字节码指令以及如何从常量池中引用字段。但我无法解决这两条线之间的差异:
具体的区别是什么?
唯一的变化是括号在第一个中指定字符串数组和在第二个中指定整数原语之间的部分。
第一个似乎在开始时只被调用一次,而第二个在每个新条目时被调用。
编辑:
这是实际相关的源代码。我用它来漂亮地打印一棵树。
其中 nodeToString 是一个返回 String 类型的方法。
谢谢开导
bytecode - 为什么字节码序列号不连续
字节码在上面,为什么左边的数字是0 1 3 4 5 7 ...,而不是连续的,例如0 1 2 3 4 5 6 7 ...,缺少2和6是否意味着什么?
java - 安装了JDK但没有javap?
我安装了 JDK 10.0.2,在我的程序类文件的文件夹中打开 cmd 并尝试命令: javap Simulation.class 。我收到命令 javap 找不到的错误。我做错了什么?
java - Java字节码中stack=1(或任何整数值)是什么意思
我一直在尝试了解以下 Java 代码的字节码是如何工作的。我找不到 stack=1 和 stack=4 部分含义的解释。
Java代码:
我编译了 SimpleRecursion.java 类,这是在 SimpleRecursion.class 上执行 javap 后得到的:
默认构造函数字节码:(stack=1 出现在第 5 行)
阶乘方法的字节码:(stack=4 出现在第 5 行)
stack=1 和 stack=4 是什么意思?
更新:似乎有一个类似的问题:
Java字节码中的`Stack=1,Locals=1,Args_size=1`是什么意思?
但它没有回答以下问题:
编译器如何知道阶乘方法的堆栈上最多有 4 个对象?它是否计算 iload/aload 指令的数量?
java - Java 字节码中的 Stack=4。Java 编译器如何计算 4 的值?(堆栈的深度)
Java 代码:
为阶乘方法提供以下字节码(我执行 javap 来生成它):
我知道在上面块的第五行中,stack=4 意味着堆栈最多可以有 4 个 objects。
但是编译器是如何计算的呢?
java - javap 产生的类型的角括号表示法
在 java profiler 命令输出中,我一直在尖括号中看到这些符号,例如
如我错了请纠正我; 通过一些练习,我已经能够关联 E-Entity、K、V - 键值对。我见过其他人喜欢java.lang.Iterable<T>
,为此我无法弄清楚 T 是什么意思。
有人可以帮我说出这些符号的名称以及Java SE中有多少这样的符号吗?
java - 我在哪里可以找到 javap 应用程序的源代码?
javap是 Java 类文件反汇编器。
在我的系统中,它是属于 Oracle JDK 的应用程序。
我想知道内部是如何javap
工作的。
这将通过示例展示 JVM 内部结构,以及如何反汇编类文件。
我可以在javap
某处获得应用程序的源代码吗?
既然它属于甲骨文,我会说不……但是……
OpenJDK 开发人员是否有类似的工具?
java - 指令 istore 是否从 main 方法中的索引 1 开始?
鉴于说明istore_<n>
及其文档:
n 必须是当前帧的局部变量数组的索引(第 2.6 节)。
它没有指定它从哪个索引开始。我假设为 0。对于给定的 istore 操作,它应该加一。
给定一个简单的类:
我希望这两种方法有不同的框架。那么这应该意味着存储的指令a
andb
将是istore_0
and istore_1
。以及用于存储c
和的相同索引d
。但由于某种原因,main 方法中的索引从1
. 这似乎总是如此。但我找不到任何有关原因的信息。
javap的输出:
是这样吗?如果是这样,为什么?