私は、ブラウザーにデプロイされる Java スウィング アプレットを作成してきました (これは、アプレットとしてはごく普通のことです)。Java 2D を使用します。
とにかく、デスクトップ アプリとして実行する開発目的のテスト ハーネスがあります。
まったく同じテスト データに基づくと、テスト ハーネス バージョンのヒープの合計サイズは 18 メガです。これは、Java 2D キャンバス上に約 7000 個のオブジェクトを、おそらく 30,000 の座標ペアとその他の小片で描画することに基づいているため、18 メガのヒープは大きいですが、ほぼ理解できます。アプリの合計サイズは 40 メガです。
今では、IBM Websphere を介して、アプレットとまったく同じコードを実行しています。
プラグインのメモリのデルタは約 160Meg に上昇します。どういうわけか、同じ Java コードが 10 倍のメモリを使用しています。
私の古いCBM64プログラマーは、最初の数字に特に感銘を受けていません.1桁の肥大化したIMOですが、2番目の数字は驚くべきものです. 私は VisualVM を探していますが、Object、char[]、String などをメモリ ホグとして配置するのに役立ちます。私のクラスはどれも近づきません。
興味深いことに、Float と Double はまったく同じ量のメモリ (それぞれ 16 バイト) を占有しているようです。
私の現時点での主な推測は、SOAP を使用したデータ取得がメモリ使用量の急増を引き起こし、理由は不明ですが、GC の代わりに SOAP XML が保持されているということです。
ここで何が起こっているかについて手がかりを持っている人は他にいますか?