如何执行Java字节码活性分析?

如何执行Java字节码活性分析?,java,bytecode,Java,Bytecode,我特别想确定一个程序中有多少初始化变量在最后是“活动的”。我有多个类文件,我已经使用 java -c file1 file2 ... >> out.txt 我该怎么办呢。我可以简单地计算一个变量第一次出现的次数,然后检查它是否在程序中再次被引用吗?然而,这有一个很大的假设,即顺序字节码,这不一定是真的 函数也可以进行活性分析吗?阅读文章。长话短说: 您希望在程序执行时截取加载到程序中的每个类,并将其替换为在所需位置(例如,在方法项处)插入指令的版本。这对于java.lang.ins

我特别想确定一个程序中有多少初始化变量在最后是“活动的”。我有多个类文件,我已经使用

java -c file1 file2 ... >> out.txt
我该怎么办呢。我可以简单地计算一个变量第一次出现的次数,然后检查它是否在程序中再次被引用吗?然而,这有一个很大的假设,即顺序字节码,这不一定是真的

函数也可以进行活性分析吗?

阅读文章。长话短说:

您希望在程序执行时截取加载到程序中的每个类,并将其替换为在所需位置(例如,在方法项处)插入指令的版本。这对于
java.lang.instrument
和像ASM这样的字节码工程库来说并不难。

对于实际上由get/set访问器保护的属性的变量,运行时可以转化为测量set访问器的性能的问题

已经有Java工具可以自动测量它(不需要发明@amir afghani建议的一些仪器魔术)

另见:


您需要在代码中添加指令插入并运行程序有没有一种自动化的方法?我正在分析大量的JAR文件,而不是直接修改代码。字节码指令插入不要求您直接修改代码-我将提供一个简短的答案您所说的活变量是什么意思?您是说,声明和/或初始化?使用变量?