ZEND_DISABLE_MEMORY_CACHE

  • 大きなarrayを定義したスクリプトを何回も実行するとどんどん空きメモリが減っていくという現象が発生(Solaris)
  • zend_alloc.cで何かキャッシュをしているようなのだが、これの実装がよく分からない。
  • 試しにgoogle:ZEND_DISABLE_MEMORY_CACHEしてみるとこれが最初に出てきました。今回と似ている現象のように見えます。

http://www.zend.com/lists/php-dev/200309/msg00287.html

  • zend_alloc.hで
#define MAX_CACHED_MEMORY 11
#define MAX_CACHED_ENTRIES 256

などと書いてあるので、256個までキャッシュして、それより大きくなりそうなら、古いやつを消すとかやっているのかな?大きな配列を使っていたりすると、その配列を何個もキャッシュしてしまっているとか。