これらの10の小さな実験に頼って、JVMの3つの主要なパラメータタイプを数秒で理解します。

これらの10の小さな実験に頼って、JVMの3つの主要なパラメータタイプを数秒で理解します。

[[343690]]

著者 |悟空兄弟

ソース | Wukong チャット アーキテクチャ (ID: PassJava666)

この実験の目的は、JVM パラメータの 3 つの主要なタイプを説明することです。 JVM チューニングで最もよく使用される XX パラメータは XX パラメータです。 JVM の XX パラメータの表示方法と設定方法もチューニングの基本的なスキルです。このセクションでは、実験的な方法で JVM パラメータを表示および設定する方法について説明します。皆さんがインスピレーションを得られることを願っています。

標準パラメータ

共通標準パラメータ

  • -version、JDKのバージョンを取得します
  • -助けて、助けを得る
  • -showverification、JDK バージョンとヘルプを取得

実践実験1 - 標準パラメータの表示

実験手順:

Java JDKのバージョンを確認する

  1. java バージョン

実験1-1

Java JDKのバージョンが1.8.0_131であることがわかります。

  • Javaヘルプドキュメントを表示
  1. java -ヘルプ

実験1-2

  • バージョンとヘルプドキュメントを表示
  1. java -バージョンを表示

実験1-3

Xパラメータ

Xパラメータの紹介

ご存知のとおり、一般的に使用されている javac は Java コードを Java クラス ファイルにコンパイルしますが、クラス ファイルを実行するにはどうすればよいでしょうか。ここでは、3 つの X パラメータを使用して、クラス ファイルが仮想マシンでどのように実行されるかを説明します。

  • -Xint: 直接的な解釈と実行
  • -Xcomp: 実行前にローカルコードにコンパイルする
  • -XMixed: 混合モード (コンパイルと解釈の両方)

ハンズオンラボ 2 - X パラメータの表示と設定

バージョンを表示

  1. java バージョン

WebIDE のコンソール ウィンドウで Java -version を実行すると、自分の環境で Java プログラムが混合モードで実行されていることがわかります。

実験2-1

  • コンパイルモードを解釈実行モードに変更する
  1. java -Xint -バージョン

WebIDEのコンソールウィンドウでコマンドを実行する

実験2-2

  • コンパイルモードをコンパイルのみモードに変更する
  1. java -Xcomp -バージョン

実験2-3

XX パラメータ

XXパラメータの紹介

XX パラメータには 2 つのタイプがあり、1 つはブール型、もう 1 つはキーと値のペア型です。

  • ブール型
    • 式: -XX:+ 特定の属性 または -XX:- 特定の属性 + は、この属性をオンにすることを意味し、- は、この属性をオフにすることを意味します。
    • 例: -XX:-PrintGCDetails、これはGC詳細出力をオフにすることを意味します
  • キー値型
    • 式: -XX: 属性キー = 属性値
    • 例: -XX:attributemetaspace=2000000 は、Java メタスペースの値を 2000000 に設定します。

ハンズオンラボ 3 - パラメータが有効になっているかどうかを確認する

この実験では主に以下の内容を説明します。実行中のJavaプログラムのPrintGCDetailsパラメータがオンになっているかどうかを確認する

  • 常時実行されるJavaプログラムを書く
  • アプリケーションのプロセスIDを表示する
  • プロセスのGCDetailパラメータが有効になっているかどうかを確認します

WebIDE メニューを右クリックし、「新規ファイル」を選択して新しいファイルを作成します。

新しいファイル

demoXXparam.javaという名前のファイルを作成します。

デモXXparam.java

WebIDEでdemoXXparam.javaを書く

  1. パブリッククラスdemoXXparam {
  2. 公共 静的void main(String[] args)はInterruptedExceptionをスローします{
  3. システム。 .println ( "hello XX params" );
  4. スレッド.スリープ(整数.MAX_VALUE);
  5. }
  6. }

WebIDEのコンソールウィンドウでdemoXXparam.javaコードをコンパイルします。

  1. javac デモXXparam.java

コードのコンパイル

コンパイル後、作成したdemoXXparamクラスのdemoXXparam.classバイトコードファイルが現在のフォルダに生成されます。

クラスファイルの作成

WebIDEでdemoXXparamコードを実行する

  1. java デモXXパラメータ

Javaプログラムの実行

出力:

  1. こんにちはXXパラメータ

WebIDEで新しいコンソールウィンドウを開く

ターミナル -> 新しいターミナル

新しいコンソールウィンドウを開く

実行中のすべてのJavaプログラムを表示します。-lはクラスファイルのパッケージ名を出力することを意味します。

  1. jps-l は

jps

demoXXparamプロセスのIDは518であることがわかりました。

demoXXparam プログラムで PrintGCDetails パラメータが有効になっているかどうかを確認します。

PrintGCDetails: ガベージコレクションが発生したときにメモリ回復ログを印刷し、プロセス終了時に各領域の現在のメモリ割り当て状態を出力します。

  1. jinfo -flag PrintGCDetails 518

ジンフォ

結果は次のとおりです。

  1. -XX:-PrintGC詳細

前述のように、- 記号はオフを意味するため、現在のデモ プログラムでは PrintGCDetails パラメータはオンになっていません。

ハンズオンラボ 4 - パラメータの有効化

  • WebIDE コンソールで demoXXparam プログラムを強制終了する
  1. Ctrl + C キー
  • 次に画面を掃除します
  1. クリア
  • 次に、パラメータ-XX:+PrintGCDetailsを指定してdemoXXparamプログラムを実行します。
  1. java -XX:+PrintGCDetails デモXXパラメータ

実験4

  • 出力:
  1. こんにちはXXパラメータ

demoXXparamプロセスのIDを表示する

プロセスID

demoXXparamのプロセスIDが1225であることがわかります。

demoXXparam PrintGCDetails の設定パラメータを表示する

新しいコンソール ウィンドウを開き、次のコマンドを実行して、プロセス 1225 の PrintGCDetails パラメータが有効になっているかどうかを確認します。

  1. jinfo -flag PrintGCDetails 1225

PrintGCDetails パラメータ

PrintGCDetails がオンになっていることがわかります。+ 記号はオンになっていることを示します。

ハンズオンラボ 5 - キー値型パラメータ値

メタスペースの価値を見る

  1. jinfo -flag メタスペースサイズ 526

メタスペースサイズ

このことから、メタスペースのサイズは 21M であると結論付けることができます。

メタスペースの値を128Mに設定する

  1. java -XX:MetaspaceSize=128m デモXXパラメータ

メタスペースのサイズを確認する

  1. jinfo -flag メタスペースサイズ 1062

メタスペースのサイズ変更

最も一般的な -Xms と -Xmx はどのようなパラメータですか?

  • -Xms パラメータは -XX:InitialHeapSize を表し、ヒープ メモリを初期化します (デフォルトでは、最大物理メモリの 64% のみが使用されます)
  • -Xmx: パラメータは -XX:MaxHeapSize、大きなヒープメモリを表します (デフォルトでは最大物理メモリの 1/4 のみが使用されます)

エイリアスがありますが、XX パラメータに属します。

ハンズオン ラボ 6 - -XX:InitialHeapSize と -XX:MaxHeapSize の値を設定します。

  1. java -XX:InitialHeapSize=200m デモXXパラメータ
  2. または
  3. java -Xms200m デモXXパラメータ

InitialHeapSize パラメータの値を確認します。この値は 200M です。

InitialHeapSize の設定

  1. java -XX:MaxHeapSize=200M デモXXパラメータ
  2. または
  3. java -Xmx200m デモXXパラメータ

MaxHeapSize パラメータの値を確認します。この値は 200M です。


MaxHeapSizeの設定

拡張機能: Javaプログラムに設定されているすべてのパラメータ値を表示する

  1. jinfo -flags <プロセスID>


マーク

  • デフォルト以外の VM フラグは、パラメータ タイプが JVM ネイティブ パラメータであることを意味します。
  • コマンドラインはユーザー定義パラメータを表す

XX構成項目の工場出荷時設定とカスタム設定を表示する方法ハンズオン実験

7 - 工場出荷時の設定ですべてのXX構成項目を表示する

  1. java -XX:+PrintFlagsInitial -バージョン


印刷フラグ初期値

ハンズオン実験 8 - JVM の現在の XX 構成項目をすべて表示する

  1. java -XX:+PrintFlagsFinal -バージョン


印刷フラグ最終

いくつかの重要な情報を確認できます:

  • [グローバル フラグ]: グローバル パラメーター。アプリケーションのパラメータをカスタマイズしても、グローバル パラメータは変更されません。

たとえば、以前は MetaspaceSize を 128m に変更しましたが、リストには依然として 21m が表示されます。


グローバルフラグ

  • :=: パラメータが変更されました。次の図に示すように、InitialHeapSize初期化ヒープメモリパラメータは264241152に変更されました。

要約すると:


工場出荷時設定とカスタムパラメータ設定

ハンズオンラボ 9 - プログラム実行時に XX 構成オプションを印刷する

  1. java -XX:+PrintFlagsFinal -XX:+InitialHeapSize=150M デモXXパラメータ

変更された値は157286400(150M)であることがわかります。

プログラム実行時にXX設定オプションを印刷する

ハンズオン ラボ 10 - JVM によって自動的に構成されるか、ユーザー (アプリケーションではない) によって手動で設定される XX オプションを表示します。

  1. java -XX:+PrintCommandLineFlags -バージョン

次のパラメータが印刷されます:


XX オプションは JVM によって自動的に設定されます

実験概要

この実験クラスでは、基本パラメータ、Xパラメータ、XXパラメータの表示方法とXXパラメータの設定方法を学びました。また、jps および jinfo ツールを活用してプロセスを表示し、パラメータを設定します。

JVM パフォーマンス チューニングについては、まだ語るべきことがたくさんあり、1 つの記事ですべてを網羅することはできません。主に小さな実験の形で、いくつかの記事に分けます。

この記事はWeChatの公開アカウント「Wukong Talks Architecture」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合はWukong Chat Architecture公式アカウントまでご連絡ください。

<<:  クラウドコンピューティングがアプリケーション開発に与える影響を探る

>>:  エッジインテリジェンス: この技術シフトが受け入れられつつある5つの理由

推薦する

アマゾン ウェブ サービスは3つの主要な利点により、多国籍企業の中国進出を支援します

多国籍企業は中国経済において重要な役割を担っている。中国は巨大な市場を持ち、開放を拡大し続け、投資環...

ウェブサイトのナビゲーションを最適化し、SEO 最適化への扉を開きます。

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですナビゲーションは、Web サイト...

Lesishu の SEO 理論: 木樽の法則

バケツの法則(樽理論):バケツにどれだけの水を入れることができるかは、バケツの最も短い板の長さによっ...

企業の口コミマーケティングプロモーション戦略

オンラインプロモーションの最高レベルは、自分でプロモーションをしなくても、人気とトラフィックが上がり...

Alibaba CloudとCAICTが共同でクラウドコンピューティング業界初のデジタル安全生産標準を発表

7月28日、デジタルビジネスのセキュアな生産に焦点を当てた初の国内標準「クラウドコンピューティングベ...

Chromeブラウザは、右クリック検索メニュープラグインを強化するために検索バーを追加します

私たちは毎日たくさんの情報を得る必要があり、その入手方法のほとんどは検索エンジン経由であるため、ブラ...

zxhost - 年間 17 ポンド / 460gDDoS 保護 / KVM / 1g メモリ / 120g ハードディスク / 6T トラフィック / OVH

安価で安定しており、ハード ドライブが大きく、トラフィックが多い VPS として、zxhost をお...

カンボジア VPS: 1 バイト、月額 4.99 ドルから、1Gbps の帯域幅、無制限のトラフィック

カンボジアのホスティング会社である1byteは、2009年に設立されました。カンボジアで主に仮想ホス...

インターネットは何を考えているのか?実話から語ろう

最近、インターネットに関する考え方が渦巻いています。大手企業から草の根レベルまで、誰もがインターネッ...

多くのウェブマスターや専門家はSEOスナップショットを理解している

近年、ウェブサイトのホームページの百度スナップショット(つまり、ウェブサイトのホームページの百度スナ...

クラウドコンピューティング運用で優れた成果を達成する方法

クラウド コンピューティングの運用の卓越性とは、組織がその使命と戦略をサポートするために、最適なコス...

#NewYearPromotion# dogyun: クラウド サーバーが 30% オフ、ルートが完全に最適化、香港\日本\韓国\米国\ドイツ\オランダ\ロシア

Dogyun は新年プロモーションを実施しており、新しいエラスティック クラウドが 30% 割引、新...

Toutiaoの張一鳴氏は著作権紛争について何と言っているか?

最近、ニュースアグリゲーションアプリ「Toutiao」は新たな資金調達ラウンドで1億ドルを調達し、そ...

浙江省の「万家ショッピング」でねずみ講に関与した47人が逮捕、2年間の取引額は287億円近く

「万家ショッピング」のゼロコスト消費モデルは、10万以上のフランチャイズと194万人以上の会員を擁す...

Baidu 入札プロモーションと SEO に関する簡単な説明

Baidu ランキングといえば、著者は当然 Baidu 入札プロモーションとウェブサイト SEO 最...