これらの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つの理由

推薦する

SEO初心者がスパイダートラップの前で敵の状況を制御する方法

人生にはいたるところに罠がありますが、SEO 最適化では罠はなおさら避けられません。ここで話題にして...

GatherContentを使用すると、プログラミングなしで完全なWebサイトを作成できます

多くの優れたスタートアップ製品は、一人の人間が突然素晴らしいアイデアや非常に有望なモデルを思いついた...

企業ブランド構築の成否は細部によって決まる

インターネットでお金を稼ぐ秘密の方法はありません。中国人の本質は他人を真似ること、または率直に言えば...

JVM ランタイム メモリ生成構造

Java アプリケーションの場合、Java ヒープは仮想マシンによって管理されるメモリの最大の部分で...

女性向けウェブサイトを運営する際に、コンテンツで目立つ方法について話す

「女が三人いれば芝居がうまい」という古い諺があります。女性はおしゃべりが上手で、話題を見つけるのが得...

ウェブサイトをより良く発展させたいなら、ユーザーエクスペリエンスに重点を置くべきです

どの業界のウェブマスターも、SEO最適化の重要性をよく知っています。これらの業界の中で、タオバオのS...

Webmaster Network からの毎日のレポート: 垂直型電子商取引は苦境に陥り、ブラウザ市場は変化している

1. STOエクスプレスとJD.comの「決裂」:JD.comのスペアパーツ倉庫物流入札が原因1社は...

smart2host-苦情防止VPS/1Gメモリ/50gハードディスク/1Gbpsポート無制限トラフィック/ルーマニア

2009 年に設立された smart2host は、ルーマニアのデータ センターでのホスティング ビ...

どの EDM 電子メール マーケティングが優れていますか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス電子メール マーケティン...

ウェブサイトに対する Google の信頼を高める 5 つの方法

Google は昨年 2 月に最初のパンダ アップデートを開始しました。当時、多くの Web サイト...

raksmart: 日本の VPS、無制限のトラフィック、Windows システム、夕方のピーク時の PING が超低

raksmart が日本のデータセンターに VPS を新規導入しました。トラフィック制限がなく、主流...

セキュリティアライアンスからBaiduの評判ウェブマスターまでの長い最適化の道

過去 2 年間、特に 2013 年は、Security Alliance によって認証された Web...

デザインベースの e コマース企業はどのようにユーザー エクスペリエンスを形成するのでしょうか?暖かい島々を二足で探検

Nuandao の前身は、Diandian.com の個人ブログでした。デザインを愛する共同設立者の...

2021 年が近づくにつれ、クラウド コンピューティング市場にはどのような変化が起こるのでしょうか?

最近、マイクロソフトは2020年12月31日までの第2四半期財務報告書を発表しました。報告書によると...

議論: サーバーネットワークの停止によって発生する SEO の問題

最近、「紫天サーバーネットワーク停止」事件がインターネット上で大きな注目を集めている。多くの Dia...