Perl 5.10.0 には正規表現周りでメモリリークが発生するとのこと。regcomp.c の修正で解決済み らしいが、Linux ディストリビューションで 既に巷に出回っている 5.10.0 は当面は、現役続行になりそうなので、 サーバでデーモン的に常時起動している場合は、問題になりそう? ちょうど XML::TreePP モジュールで、『Perl 5.8 では問題がないのに、 Perl 5.10 だとメモリリークが発生する』との問い合わせが来たので 確認していたところ。 while ( 1 ) {これだけのコードでメモリリークを確認できます。 5.8.8 では使用メモリは 5MB くらいなのに、5.10.0 ではガシガシ増える。 コードゴルフ的には、ワンライナーでも確認できたり。 $ perl -e 'qr// while 1'XML::TreePP で使っていた正規表現は、前方一致検索だけのシンプルな コードだったので、substr() を使って正規表現の利用を回避して対応。 正規表現をいったん使うと、そのメモリが開放されないのかな? Perl なのに正規表現で問題発生とは、ちょっと困りますね。 正規表現がどうしても必要なプログラムって多いと思いますが、 5.10.0 では使えないということになってしまうのでしょうか? Perl 5.8.0 も鬼門だったが、5.10.0 もやっぱり避けたほうが良い!? PS) XML::TreePP への問い合わせをもらったのは7月8日だったのですが、 確認する時間がなくて放置してしまっていました、ゴメンナサイ! |
| << 前記事(2008/09/29) | トップへ | 後記事(2008/11/02)>> |
| タイトル (本文) | ブログ名/日時 |
|---|---|
対応する括弧にマッチする正規表現
Perl5.10の正規表現では名前付きキャプチャとメモリリークが追加されました。 ...続きを見る |
にひりずむ::しんぷる 2009/04/12 04:28 |
| 内 容 | ニックネーム/日時 |
|---|---|
有用な情報ありがとうございます。 |
Henrich 2008/10/30 10:37 |
| << 前記事(2008/09/29) | トップへ | 後記事(2008/11/02)>> |