MyEclipse 啟動 Tomcat 突然變慢、CPU/記憶體飆高,多因在註釋或非可執行行誤設斷點。Eclipse 內部會嘗試在無效位置設置斷點導致 JDI 事件風暴。本文說明現象識別、根因分析、移除殘留斷點的正確操作步驟。
現象識別
- 啟動 Tomcat 卡在
Starting Tomcat... 進度條超過數分鐘。
- CPU 佔用 100%、Heap 持續增長。
- Console 無明顯錯誤,但 Debug 視圖 Breakpoints 面板顯示大量不可預期位置的斷點(如註釋行、空白行、方法簽名行)。
根因分析
- 在程式碼編輯器左側標尺雙擊新增斷點時,若滑鼠位置偏移或程式碼剛重構(複製貼上、合併重構),Eclipse 可能將斷點標記在 非可執行位元碼行(註釋、空行、大括號行)。
- JVM 啟動時嘗試在這些位置設置
MethodEntryRequest/LineBreakpoint 失敗,觸發大量異常處理與重試,拖垮啟動效能。
- 此類斷點在編輯器標尺上無法以雙擊移除(UI 狀態不同步)。
解決步驟
- 切換至 Debug 透視圖(
Window → Perspective → Open Perspective → Debug)。
- 開啟 Breakpoints 視圖(
Window → Show View → Breakpoints)。
- 在列表中找到位於註釋、空行、非執行行的斷點(通常顯示行號但無圖示或圖示異常)。
- 右鍵選擇 Remove 或全選 Remove All(若不確定哪些是壞點)。
- 回到 Java 透視圖,重新啟動 Tomcat 驗證速度恢復正常。
預防最佳實踐
- 僅在 方法內可執行語句行 設置斷點(有行號、非註釋、非宣告)。
- 大量重構/貼上程式碼後,清理所有斷點(Breakpoints 視圖 → Remove All)再重新下斷點。
- 使用 Conditional Breakpoint、Watchpoint、Exception Breakpoint 替代密集行斷點。
- 定期清理
.metadata/.plugins/org.eclipse.debug.core/ 下的斷點持久化檔案。
適用範圍
MyEclipse 2014/2015/2017/2019、Eclipse Kepler/Luna/Mars/Neon/Oxygen/Photon/2019-06 等所有基於 Eclipse JDT 的 IDE 版本。