[英]What does a memory leak look like in JConsole?
我正在嘗試使用 JConsole 來查看是否存在內存泄漏但不知道要查找什么。 如果我不得不猜測,盡管垃圾收集,內存使用量應該總是上升,如下所示:
正如您在我的另一個 SO 問題中看到的那樣,我看到了一個鋸齒狀邊緣,內存使用量上升 - 即使瀏覽器關閉並且沒有請求訪問我的本地 Tomcat 服務器 - 然后下降。
Java 中的內存泄漏在 JConsole 中“看起來像”什么?
我認為了解內存泄漏的最好方法是做一個實驗。 嘗試這樣的事情來創建內存泄漏:
Collection<Object> data = new LinkedList<>();
while(true) {
long[] canBeGarbageCollected = new long[10000];
long[] canNotBeGarbageCollected = new long[100];
data.add(Arrays.asList(canNotBeGarbageCollected));
}
除了 JConsole,你還有 VisualVM,它有一個很好的插件叫做“Visual GC”。 Java Mission Control with Flight Recording 可以為您提供很多細節。 命令行上也存在一個非常強大的工具:
jstat -gcutil -h20 $PID 1000
這將表明內存泄漏最終會導致 100% 舊空間利用率 (O),並且 CPU 將花費越來越多的時間進行完整垃圾收集 (FGCT)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.