Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Too many open files
寺西です。
Tadamasa Teranishi wrote:
>
> ガベージコレクションのタイミングは、処理系どころか実行状況(メモリの
> 使用状況とか)によって決まるのではないかと思います。
> なので、どのタイミングで起こるのかは予測不能ではないかと思います。
>
> scope から外れた時点で即死してくれれば良いのですが、どうもそうでは
> なさそうですね。
> だったら、せめて close ぐらいは明示的にやらないとまずそうに思います。
http://www.perldoc.jp/docs/perl/5.8.0/perltoot.pod
のデストラクタのところに
> デストラクタの呼出しは、Perlのガベージコレクションシステム経由で、
> 自動的に起こります。素早いですが、幾分、怠惰なリファレンスに基づ
> いた、ガベージコレクションシステムです。呼ぶべきものが何かわかる
> ように、Perl は、デストラクタが、DESTROYと名付けられることを、
> 主張します。 Perlはデストラクタを呼ぶ適切な時期を考えますが、
> 現在のところいつ呼ばれるかははっきり定義されていません。
> このために、デストラクタは、それがいつ呼ばれるかを当てにすべき
> ではありません。
と書かれていました。
いつデストラクタが呼ばれるかわからない、またいつ呼ばれるかを当てに
すべきではないということですから、いつまでもクローズされなくても
仕方ありませんね。
使い終わったら $fh->close() を呼ぶというのが安全そうです。
util::fopen() に対応する util::fclose() とでも用意して、そこで
$fh->close() を呼ぶようにしましょうか?
HACKING-ja は修正して、util::fopen(), util::efopen() でファイル
をオープンした後は util::fclose() でファイルを閉じることとでも
すれば良いかな?
# namazu-devel-ja 向きの内容だな。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E