Linux、AIX、およびHP-Ux(PA-RISC)で実行されるJavaアプリケーションを出荷します。他の2つの環境で正常に動作するアプリケーションから、HP-Uxで許容可能なレベルのパフォーマンスを得るのに苦労しているようです。これは、実行時間とメモリ消費の両方に当てはまります。
「なぜ」についての明確な記事はまだ見つかりませんが、共有コードなどが誤解を招く結果をもたらすため、「top」を使用してメモリ消費量を測定することは大雑把なアプローチだと思います。ただし、HP-Uxのメモリ消費が問題になっている顧客サイトで行う必要があるのはこれだけです。今回問題になったのは、Java1.4からJava1.5(HP-Ux 11.23 PA-RISC)に移行したときだけです。「問題」とは、16GBの物理メモリをすべて使い果たしたため、マシンが新しいプロセスを作成しなくなったことを意味します。
「空きメモリ」の合計の「前」と「後」を測定することにより、Javaアプリケーションによって消費された量を測定しようとしています。私は、10,000個のランダムな64ビット文字列をArrayListに格納するクイックアプリを作成し、Java1.4およびJava1.5でLinuxおよびHP-Uxの消費量を測定するこのアプローチを試しました。
結果:
HP Java 1.4〜60MB
HP Java 1.5〜150MB
Linux Java 1.4〜24MB
Linux Java 1.5〜16MB
これらの結果が生じる理由を誰かが説明できますか?これは、「トップ」が空きメモリを測定する方法の特異性ですか?HP上のJava1.5は、実際にJava 1.4の2.5倍のメモリを消費しますか?
ありがとう。