0

JVMが買いだめであることは知っていますが、これは私にとってショックでした。netbeanの非常に基本的な「ContactEditor」GUIといくつかの基本的な汎用インスタンスを追加した起動時の180MBの使用量ですか。

私は1998年頃のファーストパーソンシューティングゲームを作成しませんでした。私はSOコミュニティにこれについて教えてくれるよう頼みます。JConsoleの印刷画面は次のとおりです。

ここに画像の説明を入力してください

また、起動時に18のスレッドがあり、死ぬことはありません。初期スレッドとSwingのディスパッチスレッド以外に、常に存在するスレッドはありますか?

4

2 に答える 2

1

スレッドは実際にはメモリの問題ではありません(これらの18の約半分はデバッグモードIIRCにあるという理由だけです)。他のものはかなり明白な名前を持っています(私の推測):AWT-シャットダウン(すべてのウィンドウが破棄されるかどうかを確認してからJVMを終了する)、AWT-Windows(OSからイベントを取得する)、Java2Dディスポーザー(画像データをクリーンアップする)。

実行しているプログラムはわかりませんが、Netbeansプラットフォームに基づいている場合は、おそらく追加のメモリ要件が追加されますが、180MBではありません。ほとんどのメモリは使用されていない(予約されているだけ)か、実際のデータがメモリを消費していると思います。

比較のために:

  • ラベルとボタンが付いた単純なJFrameは、必要なのは最大2MB(-Xmx2MBで実行されますが、visualvmは8MBが予約されていることを示しています(64ビットWindowsでは最小ですか?)、<2MBを使用)。
  • 私が70MBのライブラリ(jar)で開発する複雑なGUIプログラムは、〜35MB(私の推測ではアイコン/画像だけで〜5-10MB)を開始し、すべての機能を使用した後です(つまり、非GUIのものを含むほとんどすべてのライブラリコードがロードされます) 〜100MBですが、これには一部のデータが含まれます。

壊す:

  1. java.awt.image.BufferedImage#156 7.056.378
  2. java.awt.image.BufferedImage#415 6.639.738
  3. sun.misc.Launcher $ AppClassLoader#1 3.386.545
  4. クラスcom.ces.core.gui.help.WelcomeTab627.256(静止画像データはこちら)
  5. class com.ces.util.resources.Translator 408.146(基本的にすべてのテキストがUIに表示されます)
  6. sun.awt.AppContext#1 389.760
  7. java.awt.image.BufferedImage#161 326.120

約半分はキャッシュされた画像のように見えます(大きな背景画像:))同じデータを参照するint [] / Object [] /HashMap.Entry []を省略しました)

サンプルアプリの内訳を確認したい場合->VisualVM->モニター->ヒープダンプ->保持されたサイズでx個の最大オブジェクトを検索します。

于 2012-06-27T10:54:57.850 に答える
1

私はよく知らないContact Editorが、組み込みデータベースまたはエミュレーターが原因である可能性があります。私のお気に入りのJVMは、一般的なSwing GUIで10スレッドを実行しますが、アクティブなのは3つだけで、実際には何も実行しません。このでは、視覚的に「ビジー」なプログラムのプロファイルを作成します。このでは、人為的に小さなヒープを使用して範囲を強調表示します。

于 2012-06-27T03:46:27.020 に答える