首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Linux 記憶體效能調優實戰指南

     編輯:Java 綜合教學

Linux 記憶體管理核心機制

Linux 將實體記憶體劃分為頁框,透過虛擬記憶體機制為每個進程提供獨立位址空間。核心子系統包含:頁面快取、匿名頁、頁表、交換空間、OOM Killer。理解這些基礎是調優前提。

關鍵效能指標與監控工具

  • free / vmstat:觀察可用記憶體、緩衝/快取佔用、交換活動(si/so)。
  • pidstat -r:進程級 RSS、VSS、Minor/Major Fault 統計。
  • /proc/meminfo:詳細記憶體佈局(Active/Inactive、Dirty、Writeback、Slab、PageTables)。
  • sar -r:歷史趨勢分析。

常見瓶頸場景與調優策略

1. 頁面快取過度佔用導致應用記憶體不足

調整 vm.vfs_cache_pressure(預設 100,增大加速 inode/dentry 回收),或限制 vm.dirty_ratio/vm.dirty_background_ratio 控制髒頁刷寫頻率。

2. 交換空間頻繁讀寫(Thrashing)

降低 vm.swappiness(預設 60,建議 10-20),優先保留熱頁在實體記憶體。若記憶體確實不足,需擴容或優化應用記憶體佔用。

3. 巨大頁面(HugePages)配置

為資料庫(Oracle、MySQL)預留 HugePages,減少 TLB Miss 與頁表開銷:vm.nr_hugepages 設定為 SGA/InnoDB Buffer Pool 大小換算值,並關閉透明大頁(THP)。

4. Slab 分配器洩漏

使用 slabtop 定位高佔用 Cache,結合 kmemleak 排查核心模組洩漏。

應用層優化建議

  • JVM:合理設定 -Xms/Xmx、-XX:MaxDirectMemorySize、啟用 UseLargePages、選擇適合負載的 GC 演算法(G1/ZGC)。
  • 資料庫:InnoDB Buffer Pool 設為實體記憶體 60-80%,避免雙重快取。
  • 中介軟體:Netty/Redis 等直接記憶體分配需監控 Off-Heap 使用量。

調優原則總結

「監控先行、找準瓶頸、分層優化、驗證效果」。記憶體調優非單一參數調整,需結合業務負載特徵、核心版本、硬體規格綜合評估。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved