我有一個使用Tomcat Webserver構建的Java應用程序。 使用Java任務控制我知道在壓力下,GC非常佔優勢。每個GC週期中,CPU都非常高。 我想知道的是,每個GC循環都在做什麼,特別是我想知道它正在推廣哪個對象,以及哪個對象正在釋放。對於被釋放的對象,我想知道,不僅是它們是什麼類型,而且它們是在哪裏創建的。只知道我有很多字節[]或字符串,顯然沒有幫助,因爲有很多地方可以創建這些地方,但只有少數地方在我的控制之下並占主導地位。Java GC很高,如何找出哪些對象是GCed
有沒有人知道這樣做的工具或方法。
在此先感謝。
您是否使用了[Flight recording](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr005.html)? – nullpointer
是的,飛行記錄儀是我發現GC導致CPU峯值的原因。但是,JFR不會提供我需要/描述的信息。或者至少我不知道如何獲取該信息 –
GC日誌以及您的JFR配置文件可以很好地瞭解原因。 – nullpointer