Pebble日本語化&改造ログ
  全カテゴリ | Blog News | Bugs | Changes | Other Blogware
 
<< TrackBackToken | Home | Pebble2.2あたりから重くなってきた? >>
SoftReference

ここの書込みをしていないですね。
最近Pebbleの解析をしていないのであまりネタがありませんが、少し覚書きなどに使おうと思います。

ブログのエントリーをXMLでファイルシステムに保存し、起動時にエントリーを(時には全て)配列に読み込み、必要に応じLuceneでインデックスを作成する。

RDBMSを使わずとも十分な検索パフォーマンスが得られ、さらにメンテナンス性も高く申し分ない構造ですが、複数ブログの場合はエントリー数は膨大になってしまうのが欠点です。
何らかのキャッシュシステムが必要になってきます。

Pebbleではこれを、
java.lang.ref.SoftReference を使って、エントリークラスの配列(日単位)をガベージコレクション(FullGC)が作動した際に自動的に参照が切れるようにして開放の候補にさせています。

GCがVMの実装依存であるため、またJDK6でも構造がかなり変わっているので不安な面もありますが、ほぼ問題なく動いているように思います。

Java特有のデザインではありますが、大変実装がしやすく、メンテナンスしやすいです。他のシステムでも応用ができると思います。

最近はRDMSを使用しないシステム開発こそが最も「幸せ」なのではないかと感じています。

またXMLパースですが、Pebbleでは XML->ObjectにSAX、Object->XMLにDOMを使っています。今だとJAXBを使うことも出来ますし、また軽量にXML->ObjectだけJakarta CommonsのDigesterを使うのもありです。

[追記]
Pebble2.xからはehcacheを使って効率をあげています。
やはりコントロールが出来ないのがネックなんでしょうね。