簡體   English   中英

Java 內存泄漏與堆轉儲信息

[英]Java memory leak vs heap dump information

我們遇到了與內存相關的問題。

我們的監視器說 out 服務正在消耗 800MiB 的內存。

我們已經創建了一個堆轉儲。 然而,這個堆轉儲告訴我們總堆大小是 41MiB。

在此處輸入圖片說明

Out 服務正在容器內運行。 我們已經閱讀了很多與 java 和 docker 容器相關的問題。 但是,我們正在嘗試獲取更多信息。

我們如何獲得更多關於 java vm 的內存相關信息?

有任何想法嗎?

堆轉儲報告的內存使用情況與外部監控報告的使用情況之間的巨大差異可能是由於一些原因。 需要注意的一些事項包括:

  1. JVM 的內存利用率不僅僅包括 Java 堆。 它包括 JVM 可執行文件和共享庫、元空間、本機 (malloc) 堆和保存線程堆棧的內存段。 它還可能包括內存映射文件和與其他進程共享的內存段。

  2. Java 堆使用的內存包括無法訪問的對象和當前未分配給對象的空間; 即空閑堆空間。

如何獲得有關 Java 內存利用率的更多信息?

主要來源是“Java 平台,標准版故障排除指南”

  • Native Memory Tracking部分解釋了如何使用jcmd來獲取整體情況。
  • JFR 內存選項卡提供對 Java 堆使用統計數據和 GC 的實時監控。
  • Jmap 實用程序可用於獲取堆和 GC 配置信息、堆直方圖和類加載器統計信息。
  • GC 日志記錄可以對 GC 行為提供有用的見解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM