64bit JVMとCompressed OOPs Feature
(↓)ここの64bit JVMと32bit JVM,どっちがいいの?的な話が発端。とても興味深い。
→ http://www.groovygrails.de/blog/groovygrails/entry/grails_java_web_hosting_32
曰く,64bit JVMのメリットは「2G/4G以上のメモリ空間を利用できる」にあるのだけれど,それに伴うデメリットもあるそうだ。そのひとつがメモリ消費量の増加(32bitと比べ60%増)なんだそうな(パフォーマンスは,64bit CPU命令使えて良いって話と,アドレッシングが4byteから8byteになって損だって話があるから,あたしとしては棚上げしていいかな思ってる)。
なんで,物理的に広大なメモリ空間を持っていて計算集約型(Compute intensive)なアプリ(ってなに?)なら64bit JVM使うと得するけど,データ集約型(Data intensive)アプリ(ってなに?)なら32bit JVMのほうがイイヨ。と言うか,選択可能だったら32bitがイイヨって書いてる。:-)
それでも,世の中のVPS屋は64bit OSをホストしているので,載っているJVMも64bitになってることもあるよ,と。でも"compressed oops feature for 64-bit JVM"に期待しよう,だって。ん,"compressed oops feature"?なにそれ?
OOPってのは"ordinary object pointer"の事らしい。なんか知らんが,64bit JVMでもアドレッシングを4byteに圧縮して使おう言う機能のようだ(超テキトウ)。
→ http://wikis.sun.com/display/HotSpotInternals/CompressedOops
どのUpdateからかは追えてないけど,少なくともJDK6u14には含まれているようだ(下のリンクだとJDK6u6pで試している)。
→ 32-bit or 64-bit JVM? How about a Hybrid? «Ismael Juma Ismael Juma
(↑)ここに書いてあるベンチマークによれば,"compressed oops feature"を使えば,32bit JVMと比べ,
- スループットは僅差
- 消費メモリ量は 16%増
で,32bit JVMより広いメモリ空間が利用できるっつうメリットが得られるようだ。いいことずくめな気もするけど,まだ -XXオプション扱いなのよね("-XX:+UseCompressedOops"で有効になる)。だから「64bit JVMは様子見」ってのは外れちゃいないんだろう。
#できれば,自分自身で体験してもっとリアリティを感じてみたいところだ。
ps.
G1コレクタとか,64bit JVMとか。新しい話題が出てきて,そろそろ持ちネタの鮮度が落ちてきたな。:-P