熱部署 : 就是容器狀態在運行的情況下重新部署整個項目.在這種情況下一般整個內存會清空,重新加載.簡單來說就是Tomcat或者其他的web服務器會幫我們重新加載項目.這種方式可能會造成sessin丟失等情況.
熱加載 : 就是容器狀態在運行的情況下重新加載改變編譯后的類.在這種情況下內存不會清空,sessin不會丟失,但容易造成內存溢出,或者找不到方法。因為內存無法轉變成對像. 一般改變類的結構和模型就會有異常,在已經有的變量和方法中改變是不會出問題的.
在基於Java的實現熱部署、熱加載的過程中,類裝入器扮演着重要的角色。類裝入器不能重新裝入一個已經裝入的類,否則會報java.lang.LinkageError,但只要使用一個新的類裝入器實例,就可以將類再次裝入一個正在運行的應用程序。一般debug模式都支持熱加載。
2. 在eclipse里面配置熱部署
雙擊tomcat,打開tomcat的配置界面,按如下幾個步驟配置eclipse熱部署:
2.1 單擊“Overview”選項卡
2.1.1 展開“Server Options”,勾選“Serve modules without publishing”選項
2.1.2 展開”publishing“,勾選”Automatically publish when resources change“選項。這個配置是用來熱部署資源,如:JSP,XML和properties文件等。
2.2 單擊”Modules“選項卡,確保”Auto Reload“是被禁用的
2.4 以DEBUG模式啟動tomcat,熱部署在DEBUG模式下才可用
3. 限制
熱部署只支持方法內代碼的修改,如果添加了新的類或方法依然需要重啟才能生效。
為了模擬這種情況,嘗試添加了一個新方法,彈出了提示框,JVM不能熱切換這個修改的代碼。