我的疑問是我修改java程式碼,然後頁面請求執行,伺服器自動編譯成字節碼並送入jvm中運行。為何要重啟jvm才能執行修改後的程式碼。
java 有很多熱部署方案啊。 https://www.google.com/search...
但是熱部署會影響效能,而且在生產環境中,java 程式碼部署的頻率是很低的。
所以,一般都是在開發環境中開啟熱部署。
虛擬機頻繁編譯,會佔用Jvm運行內存,會影響到GC,而且網站效能會降低
熱部署的本質是取代class,也就是說需要把舊的class從記憶體裡踢掉再重新載入新的class,這裡就涉及了類別的卸載,而卸載一個類別的條件之一是它的ClassLoader可以被垃圾回收收走。反過來如果ClassLoader不能被回收掉的話,那就只能重啟java了。
java 有很多熱部署方案啊。 https://www.google.com/search...
但是熱部署會影響效能,而且在生產環境中,java 程式碼部署的頻率是很低的。
所以,一般都是在開發環境中開啟熱部署。
虛擬機頻繁編譯,會佔用Jvm運行內存,會影響到GC,而且網站效能會降低
熱部署的本質是取代class,也就是說需要把舊的class從記憶體裡踢掉再重新載入新的class,這裡就涉及了類別的卸載,而卸載一個類別的條件之一是它的ClassLoader可以被垃圾回收收走。反過來如果ClassLoader不能被回收掉的話,那就只能重啟java了。