すべてのjVMパラメータとそのデフォルト値を印刷

1983 ワード

Javaプログラマーは、好奇心や仕事の必要性にかかわらず、JVMに関するパラメータを理解する必要がある場合があります.Oracleのドキュメントには、すべてではなく(ここをクリック)、デフォルトで他のパラメータが有効または無効になっているパラメータもありますが、場合によってはパラメータの設定は有効ではありません.JVMに何かをさせたい時もありますが、そのパラメータが使えるかどうか分かりません.すべてのパラメータをリストする方法を紹介します.これにより、研究やGoogleでも明確な目標が得られます.
ラインオフで実行中のJVMに設定されているパラメータを確認したい場合は、有効な方法は次のとおりです.
    1. Linuxの下でpsコマンドでJavaアプリケーションを起動するときのパラメータを見つけます
    ps -ef | grep "your java app name"  
ps -ef | grep "your java app name"

このコマンドは、Javaアプリケーションを起動するときにjavaコマンドに渡されるすべてのパラメータを打ち出し、JVMパラメータが表示されます.
    2.起動スクリプト、またはパラメータ構成を直接参照
このJVMパラメータを設定するすべての場所を見つけることができ、漏れやすいとは限らない.
一般的に、上記の2つの方法は、少なくとも特定のパラメータについてJVMをよく知っているか、よく知っている必要があります.
   
JVMには、ほとんどのJVMでサポートされているパラメータとデフォルト値を印刷できるパラメータ-XX:+PrintFlagsFinalがあります.Javaアプリケーションがそれらのパラメータを使用しているかどうかを確認したい場合は、起動時にこのパラメータを追加すればいいです.
    1.JDKでサポートされているパラメータの表示
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version  
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version

    2.Javaアプリケーションで使用可能なJVMパラメータの印刷
 
 
java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass  
java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass

 
    3.Javaアプリケーションがすでに実行されている場合は、JVMパラメータが有効になっているかどうかを確認したい場合は、jinfoというツールを使用できます.例えば、有名なG 1ゴミ回収機は、JDK 7 update 3ではクライアント(-client)モードでもサーバ(-server)モードでもデフォルトで起動されません.
jinfoはJDKとともにリリースされ、使用時にjpsでJavaアプリケーションのpidを見つけます.jinfoを直接実行すると、使用説明を表示できます.
 
jinfo -flag UseParallelOldGC 31072  
jinfo -flag UseParallelOldGC 31072

-XX:+UseParallelOldGC  
-XX:+UseParallelOldGC

 
JDKにはまだまだ実用的なツールが多く、${JAVA_HOME}/binディレクトリのコマンドごとに体験でき、サプライズがあります.