JVMは学ぶ:visualgcのチューンEclipseの起動プロセスを使用する方法。

製品より転載は少しネットである:http://www.pinlue.com/article/2020/03/0422/199981849836.html

 

JVMの最近の研究では、実際の最適化Eclipseの起動時、クラスのロード時間、JITコンパイル時間、ガベージコレクション時間3が最適化され、JVMのメモリ割り当てとガベージコレクションについてのある程度の知識を理解し、簡単な、包括的、それを検証するので、ここで、JVMの理解深めることができます。

ハードウェアとオペレーティングシステム環境:

Javaバージョン(HotSpot仮想マシン):

Eclipseの関連情報:

オリジナルのスタートアップコンフィギュレーション:

スペースの最大永久世代は256M、初期ヒープ40M、最大512Mです

GC情報は、ビューjvisualvmにツールを使用して起動します。

日食のカウントを開始するために日食のプラグインを使用してください。

最適化クラスの読み込み速度:

次のように、元のクラスローダを使用してJSTAT級のIDを参照してください。

どれもバイトコード検証プロセスをオフに禁止していない:時間を考慮すると、パラメータ-Xverifyので、バイトコード検証をリロードする必要はありません。クラスのロード時間が約半分の元の時間に減少し、最適化された状態になります。

ビルド時間の最適化:

コンパイル時間が(ジャストインタイムコンパイラで)仮想マシンのJITホッ​​トコードコンパイラがかかる、遅いランタイムコンパイラで構築された仮想マシンによって解釈仮想マシンのバイトコードで、ホットコードはネイティブ瞬時にコンパイルされます速度を改善するためのコード。

-Xintパラメータは、純粋な解釈バイトコードを実行する仮想マシンを強制的に、コンパイラの動作を禁止します。

仮想マシンは、軽量、コンパイラのコードネームC1を使用して、-clientモードを実行しているとき。

コンパイラを使用する場合、仮想マシンが-serverモードで実行されている場合、コードネームヘビー級C2は、より多くの最適化を提供します。これは、コンパイル時間を短縮しませんが、長期的には利益になります。

最適化ガベージコレクション時間:

このマシン上でEclipseの起動プロセスが12回マイナーGC、2回のフルGC、説明したメモリの割り当ては非常に合理的であるでした。マイナーGCの数が多すぎる場合は、スペースの割り当ての新しい世代が小さすぎることを示す、スペース-Xmn新世代を調整するために使用することができます。

旧世代の古いとしては、それが最大容量に達しなかったのフルGCの数を受け、主歳引き起こし拡大によるものですしています。

パーマゲンの拡大に代わって永続スペースは、時間のオーバーヘッドの一部をもたらすでしょう。

回避拡張性能もたらし廃棄するために、缶-Xms -XX:PermSizeを-Xmxパラメータが設定される-XX:PermSizeMaxパラメータ値が、最大のスペースとスペースが初期化に等しいようなものであること。起動時にこのような仮想マシンは、古いものと永久的な発電容量がダウンして固定年かかりました。

ガベージコレクタの最適化:

低CPU使用率を考慮すると、あなたはパラレルコレクタを使用して試すことができます。-XX:+ UseConcMarkSweepGCをと-XX:+ UseParNewGC。マルチコアCPUを最大限に活用する能力は、GC一時停止を低減することができます。CMSInitiatingOccupancyFraction = 85、85%のしきい値を変更する:必要-XX場合、古いデフォルトCMSのコレクションの68%で使用されるが、使用できることに注意してください。

次のようにスタートアップコンフィギュレーションの最適化の最後の日食は、完成されています。

-起動

プラグイン/ org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

--launcher.library

プラグイン/ org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20140116-2212

-製品

org.eclipse.epp.package.jee.product

--launcher.defaultAction

OpenFile

-showsplash

org.eclipse.platform

--launcher.defaultAction

OpenFile

--launcher.appendVmargs

-vmargs

-Dosgi.requiredJavaVersion = 1.6

-Xverify:なし

-Xms512m

-Xmx512m

-Xmn171m

-XX:MaxPermSizeを= 256メートル

-XX:PermSizeを= 128メートル

-XX:+ UseConcMarkSweepGCを

-XX:+ UseParNewGC

マイナーGCはわずか4回(500ミリ秒)を見ることができ、フルGCが発生していない、スペース340M古い時代には、直接の拡張ではありません。初期化の代わりに永続スペースは256M 128Mの最大値の半分に初期化されます。

スペースは十分な歳ですが、まだ完全なGCを発生した場合また、あなたが近くにSystem.gcに試すことができます()を明示的に呼び出し、-XX:+ DisableExplicitGC。

彼らは実際にJVMパラメータであり、我々はJVMのメモリ管理の背後にあるメカニズムを知って、その後、各パラメータが何を表すかを説明する必要があるので、-vmargsのパラメータは、JVMパラメータの設定を意味します。公式声明によるとヒープ(ヒープ)と非ヒープ(非ヒープ)メモリ:「Java仮想マシンは、すべてのクラスインスタンスと配列のどのメモリから実行時データ領域であるヒープを持っているが、仮想Javaでヒープここから割り当てられます。ときマシンの起動作成した。「」JVMのヒープメモリに加えて、非ヒープメモリ(非ヒープメモリ)と呼ばれています」。ヒープおよび非ヒープ:JVMは、主にメモリの2つのタイプを管理見ることができます。ショートスタックにJavaコードと記憶され、使用される現像液に任されている;非JVMヒープが自分の使用に任され、(必要なメソッド領域、JVM内部処理またはメモリの最適化ので、そのようなJITコンパイルされたコードとしてキャッシュ)、メソッドやコンストラクタのために、各クラス(例えば、実行時定数プール、フィールドおよびメソッドデータ)とコードの構造は、非ヒープメモリです。初期割り当て指定されたメモリ-XmsからJVMヒープメモリ割り当ては、物理メモリ1/64デフォルト、JVMは-Xmx 1/4デフォルトの物理メモリを割り当てられた最大メモリで指定されています。JVMスタックは-Xmxの最大限界まで増加する、ヒープスペアメモリが40%未満であるデフォルト、空き時間は、ヒープメモリ70%を超える、JVMは-Xmsまでスタックの最小制限を減少させます。従って、サーバは、一般的に配置された-Xmsは、すべてのGC後回避調整に-Xmxヒープサイズと等しくなります。JVM -XXによって使用される非ヒープメモリ割り当て:非ヒープメモリを設定PermSizeを初期値、物理メモリのデフォルト1/64; XX製:最大の非ヒープメモリのMaxPermSizeのサイズが提供され、デフォルトは、物理メモリの1/4です。物理メモリが無限大であると仮定JVMメモリ制限(最大)実際の最大物理メモリ(ナンセンス!ハハ)への最初のJVMメモリの制限は、次に、オペレーティングシステムと最大JVMメモリは素晴らしい関係を有しています。単に制御メモリ空間4ギガバイトが、32ビット・プロセッサに置くが、オペレーティング・システムは、一般的に2ギガバイト-3ギガバイト(一般のWindowsシステム1.5G-2Gに低い限界、Linuxシステム固有の制限を与えます2G-3G)以上64ビットプロセッサは、制限がないであろう。

公開された60元の記事 ウォン称賛52 ビュー110 000 +

おすすめ

転載: blog.csdn.net/yihuliunian/article/details/104675646