如何执行Java字节码活性分析?
我特别想确定一个程序中有多少初始化变量在最后是“活动的”。我有多个类文件,我已经使用
java -c file1 file2 ... >> out.txt
我该怎么办呢。我可以简单地计算一个变量第一次出现的次数,然后检查它是否在程序中再次被引用吗?然而,这有一个很大的假设,即顺序字节码,这不一定是真的
函数也可以进行活性分析吗
你可以在下面搜索框中键入要查询的问题!
我特别想确定一个程序中有多少初始化变量在最后是“活动的”。我有多个类文件,我已经使用
java -c file1 file2 ... >> out.txt
我该怎么办呢。我可以简单地计算一个变量第一次出现的次数,然后检查它是否在程序中再次被引用吗?然而,这有一个很大的假设,即顺序字节码,这不一定是真的
函数也可以进行活性分析吗
# 1 楼答案
阅读this文章。长话短说:
您希望在程序执行时截取加载到程序中的每个类,并将其替换为在所需位置(例如,在方法项处)插入指令的版本。这对于
java.lang.instrument
和ASM这样的字节码工程库来说并不难# 2 楼答案
对于实际由get/set访问器保护的属性的变量,运行时liveness analysis可以转换为测量set访问器的code coverage的问题
已经有Java工具可以自动测量它(不需要发明@amir afghani建议的一些仪器魔术)
另见: