数日Twitterで散発的に呟いていたことをまとめる。 きっかけはkazuhoさんのツイート。 細かいこと言うと、メモリを逐次解放するつもりがないなら、malloc呼ぶのは誤り。大きなブロックを確保して、先頭から順次使っていくのが正しい戦略です。処理が単純化し使用メモリ量が減り局所性が向上する結果、速度が向上する。世代GCやサーバ等多くのプログラムで用いられる一般的な手法です — Kazuho Oku (@kazuho) 2018年9月6日 世代別GCの件は誤りで、コンパクションをするGCのことかな? この「大きなブロックを確保して、先頭から順次使っていく」、まったくもって正しいんだけど話を単純化しすぎてて、実用上はいくつか問題が発生する。いつブロックを確保していつ解放するのだとか。 「サーバ等」ではリクエストを受け付けてからメモリを確保してレスポンスを返したら解放すればだいたい上手くいく
![Thoughts on GCs | κeenのHappy Hacκing Blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/e53585c26847c04a83d66e1ecd8d5cc7c20d4e56/height=288;version=1;width=512/https%3A%2F%2Fkeens.github.io%2Fimages%2Fogp%2Fpost%2FThoughts_on_GCs.png)