Java字節碼增強指的是在Java字節碼生成之後,對其進行修改,增強其功能,這種方式相當於對應用程序的二進制文件進行修改。Java字節碼增強主要是爲了減少冗餘代碼,提高性能等。
實現字節碼增強的主要步驟爲:
1、修改字節碼
在內存中獲取到原來的字節碼,然後通過一些工具(如 ASM,Javaasist)來修改它的byte[]數組,得到一個新的byte數組。
2、使修改後的字節碼生效
有兩種方法:
1) 自定義ClassLoader來加載修改後的字節碼;
2)替換掉原來的字節碼:在JVM加載用戶的Class時,攔截,返回修改後的字節碼;或者在運行時,使用Instrumentation.redefineClasses方法來替換掉原來的字節碼;