當前位置:編程學習大全網 - 源碼下載 - Linux源碼慢。

Linux源碼慢。

Linux進程通過C標準庫中的內存分配函數malloc向系統申請內存,但實際上在它們和內核之間還有壹層,那就是內存分配器。常見的內存分配器有ptmalloc(Glibc)、tcmalloc(Google)和jemalloc(FreeBSD)。MySQL默認使用glibc的ptmalloc作為內存分配器。

內存分配器采用內存池的管理方式,位於用戶程序層和內核層之間。它響應用戶的分配請求,向操作系統申請內存,然後返回給用戶程序。

為了保持高效的分配,分配器通常會提前向操作系統申請壹塊內存。當用戶程序申請和釋放內存時,分配器會對內存進行管理,並通過壹些算法策略決定是否將其返回給操作系統。這樣做最大的好處就是可以避免用戶程序頻繁調用系統分配內存,讓用戶程序更高效快速的使用內存。

個人對ptmalloc的內存分配原理不是很了解,這裏就不教斧頭遊泳了。有興趣的同學可以看看華庭的glibc內存管理ptmalloc源代碼分析。

關於如何選擇這三種內存分配器,大部分網上資料都推薦放棄glibc的原生ptmalloc,使用jemalloc或tcmalloc作為默認分配器。因為ptmalloc的主要問題其實是內存浪費、內存碎片和鎖導致的性能問題,所以jemalloc和tcmalloc更適合內存碎片和多線程。

目前jemalloc應用於Firefox、FaceBook等。,並且是MariaDB、Redis、Tengine默認推薦的內存分配器,而tcmalloc則應用於WebKit、Chrome等。

  • 上一篇:華網頁遊戲源代碼。
  • 下一篇:python怎麽做web開發
  • copyright 2024編程學習大全網