http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]]
尋找內存泄露的診斷將觸發一個徹底的垃圾回收(GC)方案,所以如果在生產環境中使用它,需要非常謹慎才行。
尋找內存泄露的診斷會試圖確認已導致內存泄露的 Web 應用(當其處于停止、重新加載,以及被取消部署狀態時)。
通常由一種分析器來確認結論。診斷使用了由 StandardHost(標準主機)實現所提供的附加功能。如果使用的是沒有擴展自 StandHost 的自定義主機,則該診斷無法生效。
已有一些文檔介紹,從 Java 代碼中顯式地觸發徹底的垃圾回收方案是不可靠的。此外,在不同的 JVM 中,也有很多選項禁止顯式觸發垃圾回收,比如像 -XX:+DisableExplicitGC。 如果你需要確認診斷是否成功地實現了徹底的垃圾回收,可以使用 GC 日志、JConsole 分析器,或其他類似工具。
如果該命令成功執行,將得到類似如下的響應:
/leaking-webapp
如果你希望在響應中看到狀態行,那么可以在請求中加入 statusLine 查詢參數,并將其設定為 true。
對于已停止運行、被重新加載或被取消部署的Web 應用,由于之前運行所用到的類可能仍然加載在內存中,從而會造成內存泄露。響應將把這種應用的每個上下文路徑都單列一行。如果應用被重新加載了數次,就可能會列出幾次。
如果命令并沒有成功執行,響應將以 FAIL 開頭,并包含一個錯誤消息。