之前總是覺得 run 和 debug 模式存在性能區別,其實也沒錯,那些斷點調試機制又不是買一贈一。
那到底怎么選擇?
淺談下其他區別:
在debug模式下,當我們修改方法體內的代碼時,我們是不需要重啟web server的,web服務器會自動的把這些改動替換到vm當中,學名叫hot swap。通過以下運行時的截圖,給大家展示一下效果
原始情況下:
在不重啟web服務器的情況下,修改控制台輸出內容,運行時控制台輸出內容即為修改后的內容
可以看到,在不重啟web server的情況下,我們修改的內容會馬上起作用。也即,這些內容會動態的添加到運行的vm當中。
但經過測試,發現並不是所有情況下,我們的改動都會同步更新到運行時vm當中。下面把可以動態更新到vm中的情況與不能動態更新到vm中的情況列一下:
改動內容可以動態更新到vm的情況
1、修改方法體內的內容,無論是實例方法還是靜態方法。
不能動態更新到vm的情況
1、新增、刪除實例方法、靜態方法時。
2、新增、刪除實例變量、類變量時。
3、引入了新創建的內部或外部類時。
4、方法當中有對類變量或實例變量的引用,當外部變量被修改時。
上面是網絡上對於熱替換功能做出的解釋。
個人總結:如果你機器卡,且后台穩定。文檔清楚,那就run吧。不然還是老老實實debug,調試起來方便。