Skip to content
Go back

tcmalloc

· Updated:

https://github.com/google/tcmalloc

  • Apache License 2.0
  • C++11以上
  • Linuxのみサポート
  • 特徴:
    • 割当失敗時、例外を投げずにクラッシュする
    • 論理ページサイズは4KiB、8K、32K、256Kから選択可能
      • デフォルトは8KiB
      • 細々した割当が多ければ、ページサイズは小さい方が良い
    • メモリをOSに返す頻度を調整可能
  • 仕組み:
    • https://github.com/google/tcmalloc/blob/master/docs/design.md
    • フロントエンド:
      • 空きメモリを保持するキャッシュ
      • スレッドまたは論理コアに1つ
    • ミドルエンド:
      • 空きメモリを保持するキャッシュ
      • メモリブロックの分割や統合を行うフリーリスト
    • バックエンド:
      • メモリチャンクを管理する
      • OSとメモリをやり取りする