Date: Thu, 20 Jan 2000 16:54:36 JST From: SHUDO Kazuyuki Subject: [JavaHouse-Brewers:30124] differences between IBM JVM & Sun classic VM (Re: Java =?ISO-2022-JP?B?GyRCJCxDWSQkOiw1chsoQg==?= ?) To: java-house-brewers at java-house.etl.go.jp (JavaHouse Brewers ML) Message-Id: <200001200751.QAA12997@cafe.muraoka.info.waseda.ac.jp> > > しかし,たとえば,IBMには,いくつかの情報があります.developerWorksは, > > 一部の日本語訳があるので,見てみるとよいでしょう. > > http://www.jp.ibm.com/developerworks/ > > たとえば,ここの「不適切なヒープ・サイズがもたらすヒープ障害について」 > > このドキュメントはいいですね。直接のURLを示しておこっと。 > http://www.jp.ibm.com/developerworks/java/tipheap.html この文章中で僕として興味を惹かれるのはやはり次の、 IBM 独自のヒープサイズの調整方法についての部分です。 IBM Developer Kit for Windows,Java Technology Edition,バー ジョン 1.1.8 では、MX パラメーターのデフォルト値は物理メ モリー・サイズの合計の2分の1です。 Java サーバー・アプリケーションで、パフォーマンスが最適 でないと思われる場合はヒープ・サイズを調べることをお勧め します。IBM はヒープをよりインテリジェントに拡張すること で、この一般的に広まっている Java の問題の改善を実現しま した。このテクノロジーは (略) 1.1.7 で最初に発表され、 (略) 1.1.8 で拡張されました。これらのJVM ではユーザーが ヒープ・サイズを設定しなければならない場合はまれであり、 通常はこのインテリジェント拡張機能と初期デフォルト値で充 分です。 IBM の JDK は Sun のものをベースにはしているようなのですが、 include/ 以下のファイルを覗くと、 IBM による改造の跡を見ることができてとても興味深いです。 例えば次のマクロが IBM によって導入されています。 (アルファベット順) #ifdef IBM_ALL interpreter.h, oobj.h, sys_api.h, tree.h #ifdef IBM_ALLOC_CACHE gc.h, interpreter.h #ifdef IBM_FASTHASH inetrpreter.h, oobj.h #ifdef IBM_FASTNEW gc.h #ifdef IBM_FASTSWEEP gc.h, interpreter.h, monitor_cache.h #ifdef IBM_HAIFA_GC finalize.h, gc.h, interpreter.h, oobj.h, sys_api.h, threads.h, typecodes.h #ifdef IBM_INTEL gc.h, interpreter.h, mmi.h, oobj.h, #ifdef IBM_JVMPI interpreter.h, jni.h #ifdef IBM_MIXED_MODE interpreter.h, jcov.h, mmi.h, oobj.h, reflect.h, sys_api.h, typedefs.h #ifdef IBM_OE_THREADS finalize.h #ifdef JMS_TRL alloc_cache.h, finalize.h, gc.h, interpreter.h, mmi.h, oobj.h, #ifdef MON_FLAT interpreter.h, monitor_cache.h, monitor.h, oobj.h, sys_api.h ここで予備知識 & 気付いたこと。 * Sun と IBM の JDK 1.1.8 を比べると、次のヘッダが増えている。 events.h, gc_protocol.h, heapmanager.h, mmi.h, sys_events.h `mmi' は Mixed Mode Interpreter を表すのだろう。 * JMS_TRL は『TRL Java Memory System』を表す。(interpreter.h, oobj.h より) `TRL' は IBM の東京基礎研究所 (http://www.trl.ibm.co.jp/) のこと。 * `HAIFA' は Haifa Research Laboratory (http://www.haifa.il.ibm.com/) のこと。 ここから推測できること。 * TRL でメモリ管理 (memory system) まわりが改良された? 例えば、oobj.h のマクロ HandleTo() を見ると、 Sun classic VM では分離されているハンドルとオブジェクトのメモリ領域が ひとつにされていることがわかります。 * Haifa Research Lab. で GC が実装された? SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh at muraoka.info.waseda.ac.jp