PHP スクリプトがどこでメモリを消費しているのか?
どの参照が意図せず残りメモリがリークしているのか?
何が循環参照を生んでいるのか?
言語としてはもう 30 歳近くになろうとしていますが、 PHP スクリプト内でのメモリの使われ方を知るための選択肢は、意外なほど少ないです。
例えば php-memprof は、PHP 処理系のスクリプト内でのメモリ確保・解放の処理をフックしてリークを見つけ出す素晴らしい拡張です。しかし当然その機構から大きなオーバーヘッドを伴い、本番環境で動作を観察し問題を見つけ出すのには不向きです。
このトークでは PHP 処理系のメモリ管理機構やメモリ使用量計測の事情を解説しつつ、力技の大道芸により PHP で PHP のメモリプロファイラーを実装する取り組みを紹介します。FFI や C 言語レイヤの処理系知識を気軽に使うゲテモノ寄りの話が聞きたい人向けです。