Windows 環境內存占用高不釋放,目前遇到的常見情況如下:
情況一:JVM內存泄漏
這種網上的排查方式有很多,自行查閱即可
情況二:SQLserver內存配置過大
這種也是,從網上查找修改方式然后修改即可
情況三:Windows安全日志導致
今天主要講講這種情況的排查過程及原因。
首先是從任務管理器查看內存占用,會發現內存占用是90%,但是將詳細信息的內存加起來是沒有到達這個占比的。
那問題來,內存去哪了,被吃了?接下來給大家推薦一個分析工具(RAMMap64.exe)
啟動工具后,我們可以看到如下現象:
第一行:Process Privabe:這個和我們任務管理器詳細信息部分中的內存占用總和應該差不多,沒問題
第二行:Mapped File: 這個是什么?看著著占用有點高呀! 先問問AI
重點:Mapped File 是加到內存中的!
那么好,接下來再通過RAMMap64看看,Mapped File都是些什么(下面這個截圖是要點到工具的Physical Pages 才能看到哈):
可以看到Mapped File對應的好多文件都是windows下的security文件,應該和操作系統安全相關。
從事件查看器中查看安全屬性:
破案了,可以看到,這個文件竟然設置了9個多G,這加載到內存里,能不高嘛。
解決方案:
要解決,很簡單也很直接,直接改小就行了。
BUT,有些環境對這個日志是有要求的,必須要保留一段時間;如果是這樣,那就不能改小了,擴容內存即可。