Java Server VM

というのを皆さんご存知か?
とりあえず下の例を見てもらおう。




public class Test{
public static void main(String args[]){
int count=0;
long start = System.currentTimeMillis();

for(int i=0;i<10000;i++){
count = 100000;
for(int j=0;j<100000;j++){
count--;
}
}
System.out.println("elapsed " + (System.currentTimeMillis()-start) + " msec");
}
}

[kanbayashi@work1 ~]$ java Test
elapsed 2535 msec
[kanbayashi@work1 ~]$ java -server Test
elapsed 7 msec


なんと、-serverオプションをつけただけで実行時間が300分の一ぐらいになってる。そう。この-serverオプションをつけた時がServer VMモードなのです。
ちなみにServer VMモードの場合、JITコンパイルのタイミングとか程度が違うらしい。


で、これだけパフォーマンスが違うのなら是非、Kikkerのサーバでも使おうと思って試してみるが-serverオプションがないと言われる。む、Windows版だと対応していないのか。
Σ(゚Д゚)ガーン


で、調べたらBEAのJRockitというエンタープライズ向けのVMが無料であるので早速移行してみる。
http://www.beasys.co.jp/products/weblogic/jrockit/faq.html


おー、Youtubeのエントリお薦めも、DB内のエントリがキャッシュに載ってくれれば、全探索でもさくさく動く。ktkr。
ただ、メモリは普通より食うなぁ。


#後で、SunのVMに戻しました。ハイスペックを想定しているためかガーベッジコレクトのタイミングが遅くて、OutOfMemoryErrorでサーバが止まるので・・・・。
#メモリを増設予定なので増設したらまた試してみようっと。