我特別試圖確定一個程序中有多少個初始化變量在它的結尾是「活」的。我有多個類文件,我已拆分成一個文件使用如何執行Java字節碼活躍度分析?
java -c file1 file2 ... >> out.txt
我該怎麼去做這件事。我可以簡單地計算一個變量的第一次出現,然後檢查它是否在程序中再次被引用?然而,這對順序字節碼有很大的假設,但這不一定是正確的。
生命力分析是否可能用於函數?
我特別試圖確定一個程序中有多少個初始化變量在它的結尾是「活」的。我有多個類文件,我已拆分成一個文件使用如何執行Java字節碼活躍度分析?
java -c file1 file2 ... >> out.txt
我該怎麼去做這件事。我可以簡單地計算一個變量的第一次出現,然後檢查它是否在程序中再次被引用?然而,這對順序字節碼有很大的假設,但這不一定是正確的。
生命力分析是否可能用於函數?
運行時間liveness analysis對於由get/set訪問器保護的實際屬性的變量可以轉換爲測量set訪問器的code coverage的問題。
已經有Java工具,可以自動測量它(沒有通過@阿米爾 - 阿富汗將需要提出了一些儀器魔法發明了)
參見:
閱讀this文章。長話短說:
你想攔截你的程序加載的每個類,而它的執行,並用一個已經在所需位置插入的版本(例如,在方法入口)替換它。這與java.lang.instrument
和像ASM這樣的字節碼工程庫並不難完成。
您需要將代碼添加到代碼並運行程序 – 2014-10-31 16:43:10
是否有自動化wa Ÿ要做到這一點?我正在分析大量的JAR文件,而不是直接修改代碼。 – jeffrey 2014-10-31 16:45:55
字節碼檢測不需要您直接修改代碼 - 我將很快提供一個答案 – 2014-10-31 16:56:42