メモリ使いすぎ 8

GCが動いてないっぽい件は、たぶんOK。
多くても50MB以内で動いている。(と今のところ見える)

で、仕事から帰って疲れて冷静になった頭で考えると、そもそもレコード数が2万行を超えるかもしれないテーブルをがんばって全部メモリに入れようとしているのが間違いで、DBに入れるかファイルに書きだす(DBもファイルに書くが)かしたほうがいい。
どうせ、部分一致検索が主で、for文でフル探索しているようなものなので、メモリに置いているから高速だとか言えるものでもないしね。

DBについては、前にキャッシュファイルにQDBMを使うかもとかいっていたが、キーテーブルやノード情報テーブルはわりと複雑な操作(追加、検索、生存期間切れ削除など)があるので、SQLが使えるDBを使ったほうが楽だし、DBを使う意味と効果があると思う。
だからといって、PostgreSQLを各自導入しろ!ってのは現実的じゃない。
ということで、SQLiteを使う!

SQLiteは、2年位前から気にはなっていたものの、ver3になってから突然APIが増大して、怖くなって使っていなかったので、ちょうどいいチャンスかなと。
Dから使うのに、SQLiteライブラリもあるのだけど、どうも古いし、活発でなさそうなので、ここは自分で使う分だけ使えるようにする。

とりあえず試してみないとなんともいえないので、明日あたりDから使えるようにして、キーテーブルだけ置き換えてみる。
いい感じなら、ノードテーブルも置き換えて、キャッシュもこれを使うようにする。