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

推薦する

ネットワークマーケティングはどのようにして新しい業界に広まるのでしょうか?

オンライン マーケティングの誕生以来、オンライン マーケティングの概念は徐々に普及し、ますます多くの...

タオバオアフィリエイトは他に何ができるでしょうか?タオバオアフィリエイトを運営するためのいくつかのアイデア

タオバオと百度が意見の相違を和解させた後、タオバオは自らが築き上げたタオバオの顧客軍団を破壊しようと...

英国やフランスを含む4カ国政府がグーグルの脱税を捜査開始

新浪科技報、北京時間12月11日早朝のニュース、ブルームバーグが月曜日に報じたところによると、フラン...

中央銀行はビットコイン取引サイトとの交渉を強化し、資金調達チェーンを完全に遮断することを望んでいる。

中央銀行は再び第三者決済と中央銀行と協議し、ビットコインの資金調達チェーンを完全に遮断することを望ん...

#墓掘り# 最高の構成と最も安い価格の「Racknerd VPS」を集める

Racknerd は設立以来、あまりにも多くのプロモーション VPS をリリースしてきました。以前の...

SEOの核となる考え方

昨日は公開授業をしました。授業の主な内容は「SEOの核となる考え方」でした。今日は授業内容を改めて整...

自動車ブランドマーケティングについて簡単に解説します!

この記事では、自動車マーケティングに関する私の見解を述べます。私は広告会社で働いており、当初は日用消...

Weiboマーケティングは本当に効果がなくなったのでしょうか? WeChatに追い抜かれるのでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス2012年から現在まで、...

顧客がクラウドコンピューティングベンダーに知りたい2つのこと

クラウド ベンダーが顧客との信頼関係を構築し、市場で差別化を図るために変更できる主な方法は 2 つあ...

ウェブサイトはスタートラインで勝利する:新しいウェブサイトの最適化のいくつかの小さな詳細

Xiaomao がウェブサイトの「スタートラインで勝つ」コラムを更新したのはこれで 3 日目です。「...

FtpIt - 年間 5 ドル / 128 MB のメモリ / 5 GB のハード ドライブ / 600 GB のトラフィック

FtpIt は、SSD ハード ドライブ搭載の OVZ や大容量メモリ搭載の KVM を宣伝してきま...

ウェブマスターの共有: 私の概念、実践、結果、そして Taobao 顧客としての要約

この記事を読んだ友人は、Taobao Affiliate が何であるか知っていると思います。簡単に言...

#windows vps# chicagovps-$6/2g メモリ/50g SSD/2T トラフィック/server2008//

chicagovps.net は、安価な Windows VPS のプロモーションを実施しており、ニ...

電子商取引企業がオンラインメディアを利用して無料マーケティングを実施するための完全ガイド

インターネット時代において、オンラインマーケティングの本質は低コストと高効率です。オンラインメディア...

タオバオストアの購買転換率に影響を与える致命的なポイント

少し前、多くの淘宝網の販売業者が張立氏を見つけ、自分の店舗の状況を調べるのを手伝ってほしいと頼んだ。...