ソフト参照と弱参照

素敵な記事発見。メモ。

java にもメモリーリークの問題はあるわけで、そんなときに知った java.lang.refパッケージの存在。ずっとリフレクション関連だと思っていたけど、リファレンスだった。恥ずかしい。

ソフト参照はその性質から、通常のキャッシュ構造向き。弱参照は、生成コストが低いけれども大量のメモリを使用するデータ構造のキャッシュに向いている。弱参照は画像処理に使えそうだなあ、と思ったら、正規化マップがその典型例だそうで。やっぱり。

しかし、ソフト参照も弱参照も、実際の動作がいまいち見えてこないなあ。難しい。いろいろ試して肌で感じるしかないのかしらん。奥が深そうで、ワクワクしつつも逡巡する。

カスタムタグでEL式を使う

EL式 (Expression Language) がなかなか便利なので、カスタムタグでも使えると良いなあと思って試してみたら、できた。

結論から言うと、JSTL1.0 と JSTL1.1 では、EL式の挙動が異なる。そのため、それぞれの環境に合わせて、タグのクラスを用意する必要がある。これ、見事にハマりました。

<dt:format date="${row.date}" />

このようにEL式を指定した場合、JSTL1.0では${row.date}という文字列のままカスタムタグに渡されるのに対し、JSTL1.1では式言語を評価した結果がカスタムタグに渡される。だから、両者を書き換えるならば、アクセッサメソッド(setter)の型から変える必要さえあるということになる。0.1違うだけなのに、スゴイ変化だ。そのフットワークの軽さはうらやましいぞ。

以下、それぞれのサンプルソースですよ。

続きを読む "カスタムタグでEL式を使う"

ケータイGC

GCの説明をするときは、ケータイの電話帳メモリの話をすることにしている。

ケータイの契約変更やメールアドレスの変更のとき、新しいデータを誰に教えるかを考える。「この人は当然教えるでしょう」、「この人は最近連絡してなかったけど、そのうちつながるかもしれないから教えておこう」、「コイツはもういいや」、「これって誰だっけ?」みたいな。これって、ケータイメモリの人為的な GC に他ならないなーと。

何回もこういうことを繰り返しても、ずっと残り続ける人がいる。高校時代の友達とか、幼なじみとか。まさに殿堂入り。その場限りの番号交換で、エデンな人もいる。難解な仕組みに思える GC も、こう考えると単純に見えてくる。

ちなみに、しばらく機種変更とかしていなかったら、電話帳がいっぱいになってしまった。よく見ると電話したことない番号ばっかり。時間ができたら、マーク・コンパクト式で掃除しようかと思いまふ。と言って、Full GC まで話を引っ張ったのは、ちょっと強引だったか。

ResourceBundle のメモリ管理

プロパティファイルが肥大化してきたので、ResourceBundle 使用時のメモリ効率が気になってきた。ムズムズと。

ResourceBundle クラスで読み込んだプロパティファイルのデータは、メモリ上に保持される。そのため、一度ファイルからデータを読んでしまえば、次回からのプロパティデータへのアクセスでは、IO に関するオーバーヘッドが無くなる。素敵だ。

しかし、ここで気になるのは、もしプロパティファイルに大量のデータがあった場合、メモリが食い潰されてしまうのではないかということ。

国際化対応に使われるくらいだから、ある程度のデータ量にも十分耐えうる仕組みを採用しているだろうと予想しつつも、そこで貴重なメモリ領域が、それなりに使われているのは確か。

で、ソースを追っていったら、読み込む bundle をソフト参照(SoftReference)で保持していた。つまり、メモリのことは JavaVM に任せておけば良いみたい。とは言え、bundle 単位で参照を持つので、あまり巨大なプロパティファイルを読み込むのは、結局メモリを圧迫してよろしくなさそう。ある程度は細分化して管理した方が、キャッシュ機能を有効に使えるかもしれない。

続きを読む "ResourceBundle のメモリ管理"

SummerSonic06 出演アーティスト

夏フェス情報が少しずつ出始めて、春の訪れを感じる。

気付けば、SummerSonicのオフィシャルサイトで、今年の出演アーティストの発表が始まっていた。今年は虫食いじゃないのね。

メタリカにリンキンパーク、マッシヴ・アタックと大物ぞろいのラインナップ。一方で、アークティックモンキーズで時流も押さえているから、さすが。個人的には、HavenとかKeaneとか、幕張メッセで聴かせてくれる系のアーティストの発表が待たれる。正直、そろそろモッシュが厳しくなってきたので。ううう。

なんか今年のサマソニは、大人セレクションな気がする。ティーンには、このラインナップの凄さとか伝わっているんだろうか。


最新エントリー
ソフト参照と弱参照
カスタムタグでEL式を使う
ケータイGC
ResourceBundle のメモリ管理
SummerSonic06 出演アーティスト
あわせて読みたいブログパーツ