昨天發現idea需要重新激活才能使用,一直使用激活碼激活實在蛋疼,分分鐘又要換碼,遂打算換破解包方式永久激活(激活方式)。
對破解包的原理來了點興趣,研究了一下,發現是使用的jvm虛擬機aop代理的技術。今天講講java虛擬機的配置啓動參數“-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1.2\bin\jetbrains-agent.jar”的原理。
Agent是java5以後引進來的,我們可以使用Agent技術構建一個獨立於應用程序的代理程序(即爲Agent),用來協助監測、運行甚至替換其他JVM上的程序,使用它可以實現虛擬機級別的AOP功能。
Agent分爲兩種,一種是在主程序之前運行的Agent,一種是在主程序之後運行的Agent(前者的升級版,1.6以後提供)。
如何使用就不詳細展開了,實際上需要編寫一個代理包,然後運行在主程序之上,或者獨立運行、連接植入主程序。熱部署,實時監控,究其原理,其實都是利用jvm的attach來對運行中的代碼進行重新編寫實現的。