eclipse修正jvmパラメータの調整方法(2種類)


本論文では、eclipseがjvmパラメータの調整方法(2つ)を紹介します。
基本的にはeclipseに関する設定をしないと、eclipseを使って起動が遅いと感じるので、良いカードを使っても、実際にはeclipseに関するパラメータをいくつか設定するだけで、大きな改善があります。
二つの方法があります
1、eclipseプロファイルeclipse.iniを開いて、-Xmx(その数値はjvmが使用できる最大メモリ数を表します)を変更します。
2.  javaプログラムを実行する時、run->run configration->argmentsを選択して、入力-Xms 100 M-Xmx 800 M(-Xmsはjvm起動時に割り当てられたメモリサイズを表しています。-Xmxは最大でどれぐらいのメモリを割り当てられますか?)。
今日はeclipseでドキュメントを画像に変換するテストをしましたが、次のようなエラーがありました。
java.lang.OutOfMemoryError:Java heap space
上の異常情報からは、JVMが使用するメモリが仮想マシンに割り当てられている最大メモリを超えています。問題はeclipseの中でjvmの最大メモリをどのように設定するかになります。
一、Eclipse.iniファイルの修正を試みます。
eclipseディレクトリ下のeclipse.iniファイルを見つけて、下記の内容を修正します。

-Xms40m
-Xmx512m
修正後、eclipseを再起動したら、まったく効果がないことが分かりました。その後、いくつかの資料を調べてみましたが、ここで設定されている最小メモリと最大メモリはJVMに使われていますか?このメモリ値はeclipse自身が使用しているメモリを含みます。
二、jdkを修正してメモリを使用する(この方法は実行可能です。)
eclispeのwindow->preferences->Java->Installed JREを見つけて、右側のEditボタンをクリックして、編集画面の「Default VM Agments」の中に次の値を記入すればいいです。

-Xms64m -Xmx128m
三、Run Configrationsを修正する(この方法は可能です。)
コードの上で右クリックして、「Run As」->「Run Configrations」をクリックして、Agmentsパラメータの中の「VM argments:」に下記の値を記入すればいいです。

-Xms64m -Xmx128m
主に以下のjvmパラメータでヒープメモリを設定します。
-Xmx 512 m
最大総括メモリは、一般的に物理メモリの1/4に設定されています。
-Xms 512 m
初期の総括的なヒープのメモリ、普通はそれを設定して最大のヒープのメモリと同じに大きくて、このように現在のヒープの使用状況によってヒープの大きさを調整する必要はありませんでした。
-Xmn 192 m
若くて山のメモリを持って、sun公式は全体の山の3/8に推薦します。
ヒープメモリの構成
総括的なヒープのメモリ=若いヒープのメモリ+年を取ってメモリを積みます+長い間メモリを持ちます
若いベルトメモリ
オブジェクトを作成したばかりの時はここに置いてください。
年老いてメモリを積む
対象は本当に回収される前にここに置いておきます。
耐久テープヒープメモリ
クラスファイル、メタデータなどはここに置いてください。
-XX:PermSize=128 m
スタッドレスバンドの初期サイズ
-XX:MaxPermSize=128 m
長いバンドの最大サイズはeclipseでデフォルトは256 mです。jdkをコンパイルするなら、これを大きくしてください。種類が多すぎるからです。
四、現在のJVMメモリコードを調べます。
以下は現在のJVMメモリサイズを調べるコードです。以上の設定でJVMのメモリが変化するかどうかをテストできます。JVMメモリの設定項目を追加したら、eclipseを再起動する必要がありません。具体的なコードは以下の通りです。

public class TestMemory {
 
  /**
   * @param args
   */
  public static void main(String[] args) {
    System. out .println( "      :" + toMemoryInfo());
  }
 
  /**
   *      jvm      
   *
   * @return
   */
  public static String toMemoryInfo() {
 
    Runtime currRuntime = Runtime.getRuntime ();
    int nFreeMemory = ( int ) (currRuntime.freeMemory() / 1024 / 1024);
    int nTotalMemory = ( int ) (currRuntime.totalMemory() / 1024 / 1024);
    return nFreeMemory + "M/" + nTotalMemory +"M(free/total)" ;
  }
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。