2011年02月07日

メモリ管理は奥が深い・・・

お久しぶりです、ミヤジーです。
最近はメモリ管理について勉強していますパンチ
皆さん、C言語でメモリ確保する際はmallocを使用していたと思います。
C++言語になってからnewを使用するようになり、直にmallocを使用する機会が減ったと思いますが、
ゲーム制作においては、メモリを厳密に管理したいという理由で、自作メモリアロケータを書くということがあります。
(また、mallocは遅いのでアロケータを書くという話も耳にします。)
、
そこで、ふと思ったのですが、本当にmallocは遅いのでしょうかexclamation&question
mallocについて調べてみると、高速化を図るためにいろいろな改良をしたmallocが考案されていました。

・dlmalloc
・phkmalloc
・jemalloc
・tcmalloc
・nedmalloc
...etc

以上に挙げたmallocの実装は、ソースコードを見ることができるので勉強してみては如何でしょうか?
メモリ確保と解放のための高速化技法がふんだんに取り入れられていますexclamation×2
また、メモリの使用効率を上げるために、いろいろな工夫がなされています。
下手に自作メモリアロケータを書くと、mallocの方が速くてメモリ使用効率が良いということに・・・たらーっ(汗)

そして、メモリ管理といえばガベージコレクション!
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

ということで、お勧めの本を1冊紹介したいと思います。

http://www.amazon.co.jp/dp/4798025623

ガベージコレクションについて非常に分かりやすく解説されているので、
是非読んでみて下さいexclamation×2
メモリ管理は奥が深いですあせあせ(飛び散る汗)

posted by 管理人 at 21:23 | プログラミング