[英]Why does heap memory usage graph look like this?
大規模鋸齒圖案表示 GC 周期之間的內存利用率。 應用程序穩定地分配對象(上坡線),直到堆滿讓 VM 決定運行 GC(重點)。 然后 GC 回收大量垃圾(急劇下降)並重新開始該過程。
向上和向下的短尖峰更難理解。 向上的尖峰可能代表了觸發年輕代周期的異常“大”分配(短生命周期對象)。 向下的尖峰可能表示緩存對象因“內存壓力”而被釋放。
如果您想更好地了解峰值,您需要查看 GC 日志消息,並嘗試將它們與圖表相關聯。
看起來像那樣是因為(至少)您正在觀察它。 如果您的應用程序完全沒有做任何事情,並且沒有線程進行任何分配,那么您將獲得一條水平線作為堆。
但是,由於您正在觀察它,因此 JVM 中正在執行一些操作以將這些數據返回給您。 這就是為什么您會在許多分析問題中看到無處不在的鋸齒圖案。 下面舉幾個例子。
這是工作中的java垃圾收集。 每次刪除都是垃圾收集器,通過刪除未使用的引用來釋放內存。 它再次增長的原因僅僅是因為您的應用程序不斷創建新的引用。
您還可以查看這篇文章以獲得更深入的解釋: 為什么是鋸齒形圖?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.