JVMパラメータを設定します

Javaの起動パラメータは、3つのカテゴリに分類されます。

( - )一つは、標準的なパラメータであり、JVMのすべては、これらのパラメータの機能を実装する必要があり、かつ下位互換性。

第二は、JVMを達成するために、非標準的なパラメータ(-X)、これらのパラメータのデフォルトの関数であるが、すべてのJVMの実装は、下位互換性を確保するために、ではない満たすためにことを保証するものではありません。

第三のパラメータは、非安定(-XX)であり、これらのパラメータのJVM実装の各々を使用して、注意して使用する必要が、将来はいつでもキャンセルすることができる、異なるであろう。

、JVM標準パラメータ( - )

JVMパラメータは、標準に基づいており、「 - 」冒頭、「Javaの-help」または「Javaの? - 」と入力して、あなたはJVM標準のパラメータリストを表示することができます。として 
ここでは、コードの断片を書きます

以下は、詳細な説明標準JVMパラメータ(赤でマークされたパラメータは強調しますのでご注意ください)です。 
以下は、詳細な説明標準JVMパラメータ(赤パラメータでマークは、注意を集中してください)です。

-クライアント

より速く起動しますが、実行時のパフォーマンスとメモリ管理の効率が高くない、一般的にクライアントアプリケーションやPCアプリケーションの開発およびデバッグに使用することを特徴とクライアントモードを使用するようにJVMを設定します。

-サーバ

JVMは、本番環境に適した、より遅い開始することを特徴とサーバモード、が、高い実行時のパフォーマンスとメモリ管理の効率化を設定します。-client引数を無視して、このモードは、64ビットの機能を持つJDKの環境ではデフォルトで有効になっています。

-agentlib:libnameを[=オプション]

地元のパケットをロードするためのLib。

libnameには、ローカルエージェントデータベースファイル名である場合には、デフォルトの検索パスは、複数のパラメータの間にカンマで区切っPATH環境変数、ローカルライブラリの起動パラメータに転送するためのオプションへのパスです。LinuxのJVM検索地元の図書館でlibname.dllと呼ばれるWindowsプラットフォームの検索JVMローカルライブラリファイルにファイルの検索パスの環境変数は、このようなSolaries上のLD_LIBRARY_PATHのデフォルトの検索など、さまざまなシステム上で異なっているlibname.so命名。

たとえば、次のように-agentlib:hprofの

JVMは、指定したファイルにCPU、メモリ、スレッド、動作データ、および出力など、動作を得るために使用される、Windowsの検索パスをJRE_HOME / binに/ hprof.dll。

-agentpath:パス名[=オプション]

他の特徴およびagentlib;ローカルライブラリの全負荷パス、長い検索パスPATHでより多くの情報が、その後の詳細な説明で継続される部分をJVMTIます。

-classpathクラスパス

-cpクラスパス

分離;セミコロンを使用して、ディレクトリ名、ジャードキュメント名、zipファイル名を検索するJVMに通知しCLASSPATHと-classpathが設定されていない場合は使用-classpath JVMのクラスの検索パスは、もは​​やJVMを使用して、CLASSPATHを使用しません後カテゴリ検索パスとして現在のパス(。)。

ブートストラップ、拡張、ユーザー:JVM検索カテゴリなどの方法および順序。

JVMパスブートストラップ、はSystem.getProperty(「sun.boot.class.path」)によって得られたこれらのJVM最初のパッケージファイルの検索パスの検索をJARまたはZIPファイルを運んでいます。

jarファイルJRE_HOME / libに/ extディレクトリにある拡張子、検索ブートストラップ、はSystem.getProperty(「のjava.ext.dirs」)によって得られた検索パスが完了した後に、このディレクトリ内のJVMのjarファイルを検索します。

現在のパスのためのユーザーの検索順。、CLASSPATH、-classpath、JVM最後のこれらのディレクトリを検索し、はSystem.getProperty(「のjava.class.path」)を取得した検索パス。

-Dproperty =値

システムセットは、得られた値のこのJVM利用可能で、System.getProperty(「プロパティ」)値の上で動作するアプリケーションを名前/値のペアを属性。

値にスペースがある場合は、-Dname =「宇宙文字列」として二重引用符で囲まれた値を、使用する必要があります。

このパラメータは、典型的には、特性がプログラムのどこからでもアクセスできるように、そのようなプロファイルパスとして、グローバル変数レベルのシステムを設定するために使用されます。

-enableassertions [:」...」| :]

-she [ "..." | :]

それは、(JDK 1.4のサポートの最初から)アサーション・メカニズムを有効にするかどうかをJVMこれらのパラメータを設定するために使用され、JVMアサーションメカニズムはデフォルトで閉じられています。

-Eaは、アサーション機構を開き、そして時にクラス名の実行アサーションのすべてのパッケージとクラスのないあなたが唯一の特定のパッケージまたはクラスのアサーションの後に実行したい場合は、パッケージ名やクラス名は-eaに追加することができます。たとえば、パッケージcom.wombat.fruitbatの表明、使用可能なコマンドのJava -eaを開始するには:com.wombat.fruitbatを....

-disableassertions [:」...」|

二、JVM非標準的なパラメータ(-X)

次のように「Javaの-X」は、非標準的なパラメータリストを出力することができます。 
ここで説明する絵を書きます

また、以下に記載されている拡張パラメータとして知られている非標準パラメータ:

-Xint

JVMは、バイトコードのすべてがネイティブコードにコンパイルすることなく、直接実行される、動作モードを説明するために提供しました。

-Xbatch

翻訳が完了した後のコードが実行される強制的にフォアグラウンドでコンパイルされた背景コンパイルされたコードを、オフにします。

デフォルトでは、JVMはコンパイルされていない場合はインタプリタモードで実行すると、コードがフォアグラウンドで実行されて、バックグラウンドでコンパイルします。

-Xbootclasspath:ブートクラスパス

rt.jarのJDKを置き換えるために、指定されたパス(ディレクトリがセミコロン、JAR、またはZIPによって分離することができる)ロードbootclassからJVMをさせ、必要がない場合、一般的に使用されていません。

-Xbootclasspath /:パス

指定したパス内のすべてのファイルは、デフォルトのブートストラップ・パスに追加します。

-Xbootclasspath / P:パス

デフォルトのパスをブートストラップするために指定したパスをロードするために、すべてのファイルのJVM優先順位をしてみましょう。

-Xcheck:JNI

追加のチェックのJNI機能;この時間JVMがJNI関数パラメータの合法性を確認するために渡されますが、ネイティブコードで不正なデータが発生し、JMVは致命的なエラーが終了します報告した。このパラメータを使用すると、パフォーマンスの低下の原因となります、警告してください。

-Xfuture

ましょうJVMクラスファイル形式の厳密なチェック(デフォルトのJVMがない厳格なフォーマットチェック)、クラスファイル形式の仕様に準拠するためには、このパラメータを使用することを推奨しています。

-Xnoclassgc

クラスのクローズGC機能、それがガベージコレクションを防ぐので、それは慎重に、OutOfMemoryErrorが発生の原因になります。

-Xincgc

(デフォルトではオフ)インクリメンタルGCをオンにします。これは、アプリケーションが表示され、長い時間のためのGCの一時停止を減らすことができます。しかし、可能性があるため、同時実行とアプリケーションのため、アプリケーションはCPUの処理能力を下げることができます。

-Xloggc:ファイル

そして、-verbose:gcを同様の機能が、毎回ファイルにGC関連のイベントは、最高のローカル上のファイルの場所は、潜在的なネットワークの問題を避けるために。

同時にverboseコマンドを使用して、コマンドラインがある場合は、場所が優先-Xloggc。

-Xms

JVMは、初期ヒープ・サイズを指定し、デフォルトは、物理メモリの1/64、1Mの最小値であり、単位は指定されていない場合、デフォルトはバイトであり、そのようなK、Mとして、指定することができます。

-Xmx

JVMヒープの最大値が指定され、デフォルトは1/4又は物理メモリ1G、最小2M;一貫した単位と-Xms。

-Xss

一般的に512Kをデフォルトと、シングルスレッドのスタックサイズを設定します。

-Xprof

出力プロファイルデータCPU

-Xrs

JVMが開始1.3.1から有効なパラメータのオペレーティング・システムのシグナル(信号)を減少させます。

開始から、プログラムを閉じる前にJdk1.3.0は、JVMはまた、急激もJVMを終了する(そのようなデータベース接続プールを閉じるように)いくつかのコードを実行することができる可能。

JVMツールを閉じて、コンソールを監視することによって、イベントに関連する上記の機能を満たすため、イベントをより正確には、ツールの実行を閉じる前に、通知、制御ハンドラコンソールを登録し、CTRL_C_EVENT、CTRL_CLOSE_EVENT、CTRL_LOGOFF_EVENT、およびCTRL_SHUTDOWN_EVENTこれらのタイプ真ダイレクトを返します。

バックグラウンドで(例えばサーブレットエンジンなど)のサービスとして実行するJVM場合でも、彼はCTRL_LOGOFF_EVENTイベントを受け取ることができますが、今回はプログラムを終了するように初期化する必要はありません。同様の紛争の再発を避けるために、JDK1.3.1から-Xrsパラメータの提供を開始しました。このパラメータが設定されている場合、JVMは、彼がCTRL_C_EVENT、CTRL_CLOSE_EVENT、CTRL_LOGOFF_EVENT、またはCTRL_SHUTDOWN_EVENTイベントを監視し、処理していないことを、コンソール制御ハンドラを受信しません。

上記のこれらのパラメータは、そのような-Xmsn、-Xmxnは......我々は非常に重要なパフォーマンス最適化パラメータです。

-Xprof、-Xloggc:ファイルのトラブルシューティングプレイヤーは、すべてのプロの追跡ツールの例存在しない状態です。

三、JVM非安定パラメータ(-XX)

Java 6の(21 21oder更新後)バージョンのHotSpot JVM JVM、コマンドラインXXを出力することができるすべてのパラメータと値を開始した後、二つの新しいパラメータを提供します。

-XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial
  • 1

読者は、出力にすべてのパラメータとデフォルト値を次のステートメントを使用することができます

java -XX:+PrintFlagsInitial  -XX:+PrintFlagsInitial>>1.txt
  • 1

非常に多く、そのため、ここで説明するすべてのパラメータをリストされていない非Stateパラメータに起因します。私たちは、より一般的に使用されるご紹介します。

-XXでは、Java HotSpot VM:設定可能なパラメータのリストについて説明します。

これらのパラメータは、緩く三つのカテゴリーに集約してもよいです。

行動パラメータ(行動オプション):JVMの基本的な動作の一部を変更するために使用。

チューニング(パフォーマンス・チューニング):パフォーマンス・チューニングのためのJVM。

チューニングパラメータ(デバッグオプション):一般など、より詳細な情報JVMを表示するために使用されるJVMパラメータオープン、印刷、エクスポートを追跡するために使用されます。

行为参数(功能开关)

-XX:-DisableExplicitGC  禁止调用System.gc();但jvm的gc仍然有效

-XX:+MaxFDLimit 最大化文件描述符的数量限制 -XX:+ScavengeBeforeFullGC 新生代GC优先于Full GC执行 -XX:+UseGCOverheadLimit 在抛出OOM之前限制jvm耗费在GC上的时间比例 -XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC -XX:-UseParallelGC 启用并行GC -XX:-UseParallelOldGC 对Full GC启用并行,当-XX:-UseParallelGC启用时该项自动启用 -XX:-UseSerialGC 启用串行GC -XX:+UseThreadPriorities 启用本地线程优先级 性能调优 -XX:LargePageSizeInBytes=4m 设置用于Java堆的大页面尺寸 -XX:MaxHeapFreeRatio=70 GC后java堆中空闲量占的最大比例 -XX:MaxNewSize=size 新生成对象能占用内存的最大值 -XX:MaxPermSize=64m 老生代对象能占用内存的最大值 -XX:MinHeapFreeRatio=40 GC后java堆中空闲量占的最小比例 -XX:NewRatio=2 新生代内存容量与老生代内存容量的比例 -XX:NewSize=2.125m 新生代对象生成时占用内存的默认值 -XX:ReservedCodeCacheSize=32m 保留代码占用的内存容量 -XX:ThreadStackSize=512 设置线程栈大小,若为0则使用系统默认值 -XX:+UseLargePages 使用大页面内存 调试参数 -XX:-CITime 打印消耗在JIT编译的时间 -XX:ErrorFile=./hs_err_pid<pid>.log 保存错误日志或者数据到文件中 -XX:-ExtendedDTraceProbes 开启solaris特有的dtrace探针 -XX:HeapDumpPath=./java_pid<pid>.hprof 指定导出堆信息时的路径或文件名 -XX:-HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息 -XX:OnError="<cmd args>;<cmd args>" 出现致命ERROR之后运行自定义命令 -XX:OnOutOfMemoryError="<cmd args>;<cmd args>" 当首次遭遇OOM时执行自定义命令 -XX:-PrintClassHistogram 遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同 -XX:-PrintConcurrentLocks 遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同 -XX:-PrintCommandLineFlags 打印在命令行中出现过的标记 -XX:-PrintCompilation 当一个方法被编译时打印相关信息 -XX:-PrintGC 每次GC时打印相关信息 -XX:-PrintGC Details 每次GC时打印详细信息 -XX:-PrintGCTimeStamps 打印每次GC的时间戳 -XX:-TraceClassLoading 跟踪类的加载信息 -XX:-TraceClassLoadingPreorder 跟踪被引用到的所有类的加载信息 -XX:-TraceClassResolution 跟踪常量池 -XX:-TraceClassUnloading 跟踪类的卸载信息 -XX:-TraceLoaderConstraints 跟踪类加载器约束的相关信息

おすすめ

転載: www.cnblogs.com/AllIhave/p/11773484.html