知っておくべきすべてのJVMパラメータは次のとおりです

知っておくべきすべてのJVMパラメータは次のとおりです

[[439460]]

この記事はWeChatの公開アカウント「Java Technology Guide」から転載したもので、著者はZhibeijunです。この記事を転載する場合は、Java Technology Guide の公開アカウントにご連絡ください。

みなさんこんにちは、私はZhibeijunです。

前回の記事では、次のようなさまざまなガベージコレクターを紹介しました。

新世代のガベージ コレクター: Serial、ParNew、Parallel Scavenge。

旧世代のガベージ コレクター: Serial Old (MSC)、Parallel Old、CMS。

全体山札: G1

最後に、最も強力なガベージ コレクターである ZGC が導入されました。

この記事では、これらのガベージ コレクターの JVM パラメータ構成について紹介します。

JVM パラメータは多数あります。実際、ほとんどの状況に対応するために、デフォルトの JVM パラメータを変更せずに直接使用できます。ただし、限られたハードウェア リソースの下で展開されたシステムの最大限の動作効率を実現したい場合は、関連する JVM パラメータを設定することが不可欠です。以下では、これらの JVM パラメータについて詳しく紹介します。 JVM パラメータは、主に次の 3 種類に分けられます (記述形式によって区別できます)。

1. 標準パラメータ

標準パラメータには、その名前が示すように、非常に安定しており、基本的に JVM バージョンの変更によって変化しない関数と出力結果が含まれます。

-help コマンドを使用してすべての標準パラメータを取得できます。

これらのコマンドの詳細な説明については、公式 Web サイトを参照してください: https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html

-help も、より一般的に使用される -version と同様に標準パラメータです。

①、-バージョン

Java バージョン情報を表示します。

2. Xパラメータ

上記の標準化されたパラメータに対応する、非標準化されたパラメータです。将来の JVM バージョンで変更される可能性があることを示しますが、-X で始まるパラメータは比較的変更されません。

Java -X コマンドを使用して、すべての -X パラメータを取得できます。

これらのパラメータの紹介については、上の写真の中国語の説明が非常に明確なので、ここではあまり詳しく説明しません。

3. XXパラメータ

これは、日常の開発で遭遇する最も一般的なパラメータ タイプです。これも標準化されていないパラメータであり、比較的不安定です。 JVM バージョンの変更により変更される可能性があります。主に JVM のチューニングとデバッグに使用されます。

注: このパラメータは、JVM チューニングの以降の紹介で最も詳しく説明するパラメータです。

このパラメータの記述形式は、次の 2 つのカテゴリに分かれます。

①.ブール型の形式: -XX:[+-] は、名前属性を有効または無効にすることを意味します。

例: -XX:+UseG1GC (G1 ガベージ コレクターを有効にすることを示します)

②.キー値タイプの形式: -XX:= は、名前の属性値が値であることを意味します。

例: -XX:MaxGCPauseMillis=500 (GC の最大一時停止時間が 500 ミリ秒に設定されていることを示します)

4. パラメータの詳細な説明

1. ユーザーまたは現在の仮想マシンによって設定されたパラメータを印刷する

  1. -XX:+PrintCommandLineFlags

例えば:

2. 最大および最小ヒープメモリ設定

-Xms512M: 初期ヒープメモリ値を512Mに設定します

-Xmx1024M: 最大ヒープメモリサイズを1024Mに設定します

ここで、ms はメモリ開始の略語、mx はメモリ最大 (memory max) の略語で、それぞれ最小ヒープ容量と最大ヒープ容量を表します。しかし、これは -X パラメータではなく、実際には -XX パラメータであり、次のパラメータと同等です。

-XX:初期ヒープサイズ

-XX:最大ヒープサイズ

通常の状況では、サーバー プロジェクトの実行中はヒープ スペースが縮小および拡大し続けるため、必然的にシステムに不必要な負荷がかかります。したがって、実稼働環境では、ヒープ サイズを調整するときに GC に不必要な負荷がかからないように、JVM の Xms と Xmx を同じに設定する必要があります。

3. 異常なスナップショットをダンプし、ファイルとしてエクスポートする

-XX:+メモリ不足エラー時のヒープダンプ

-XX:ヒープダンプパス

ヒープ メモリの OOM の確率は、すべてのメモリ枯渇例外の中で最も高くなります。エラーが発生したときのヒープ情報は、問題の解決に非常に役立ちます。したがって、JVM にこのパラメータ (-XX:+HeapDumpOnOutOfMemoryError) を設定して、OOM 例外が発生したときに JVM がヒープ情報を出力できるようにし、(-XX:+HeapDumpPath) パラメータを通じてヒープ メモリ オーバーフロー スナップショット出力のファイル アドレスを設定します。これは、数か月間隔で発生する OOM 例外の場合に特に重要です。

通常、次の 2 つのパラメータは一緒に使用されます。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./

4. OOMを送信した後、スクリプトを実行する

-XX:メモリ不足エラー

たとえば、次のように設定します。

-XX:OnOutOfMemoryError="C:\Program Files\Java\jdk1.8.0_152\bin\jconsole.exe"

OOM が発生した後に jconsole.exe プログラムが実行されることを示します。 jconsole.exe のパス Program Files にはスペースが含まれているため、ここで "" を追加する必要はありません。

このパラメータを使用すると、システム OOM 後のスクリプトをカスタマイズして、電子メール警告情報の送信やシステムの再起動などに使用できます。

5. GC情報を印刷する

①、GC簡易情報を印刷

-詳細:gc

-XX:+プリントGC

1 つは標準パラメータであり、もう 1 つは -XX パラメータです。どちらも詳細な gc 情報を出力します。通常、次の情報が印刷されます。

たとえば、最初の行は、GCコレクション前のメモリが12195K、コレクション後のメモリが1088K、合計メモリが125951Kであることを示しています。

②、GC詳細情報を印刷する

-XX:+GC詳細を印刷

-XX:+GCタイムスタンプを印刷

6. GCログ出力をファイルとして指定する

-Xloggc:./gc.log

このパラメータは、gc ログをファイル形式で出力するために使用され、ログを表示して問題を見つけやすくなります。

7. 永続世代のサイズを設定する

-XX:最大パーマサイズ=1280m

JDK1.7 およびそれ以前のバージョンでは、Hotspot のみが永続世代と呼ばれる Perm 領域を持ちますが、これは起動時にサイズが固定されており、調整が困難です。

場合によっては、動的にロードされるクラスが多すぎると、Perm 領域で OOM が発生しやすくなることがあります。例えば、実際の Web プロジェクトでは、機能ポイントが多数あるため、動作中に多くのクラスを動的にロードする必要があり、次のようなエラーが発生します。

「スレッド 'dubbo client xxconnect' で例外が発生しました java.lang.OutOfMemoryError:PermGenspace」

この問題を解決するには、プロジェクトを開始するときに操作パラメータ -XX:MaxPermSize を設定する必要があります。

注: JDK 1.8 以降のバージョンでは、永続世代の代わりにメタスペースが使用されます。 JDK1.8 以降のバージョンでは、パラメータ -XX:MaxPermSize を設定すると、JVM の起動時にエラーは報告されませんが、次のプロンプトが表示されます。

Java Hotspot 64 ビット サーバー VM 警告: オプション MaxPermSize=1280m を無視します: サポートは 8.0 で削除されました

8. ガベージコレクターの共通パラメータ

<<:  クラウドストレージのスケーラビリティの利点と限界

>>:  クラウドネイティブのセキュリティツールを使用する場合と使用しない場合

推薦する

スマートルーター戦争が迫る

スマートルーターをめぐるインターネット大手企業同士の戦いが始まろうとしている。いくつかの情報筋による...

クラウドネイティブテクノロジー: コンピューティングの未来を受け入れる

クラウド ネイティブ テクノロジーとは、クラウド環境で動作するように特別に設計されたアプリケーション...

100% Mallがオンラインねずみ講事件に関与、Fanli.comの収益モデルが論争を巻き起こす

最近、福州100%モールが「リベート」という概念を利用して資金集めのねずみ講を行っていた違法行為が暴...

今後のモバイル検索の3つの大きなトレンドについて簡単に説明します

モバイル デバイスの市場シェアが継続的に増加していることから、検索業界の将来はモバイル検索が主流にな...

サイトをアップグレードする際に検索エンジンテストに簡単に合格する方法

サイトのアップグレードは、数え切れないほどの SEO 担当者の悩みの種です。サイトをアップグレードし...

weloveservers-2g メモリ/80g ハードディスク/1500 トラフィック/月額 5 ドル

11月に設立されたweloveserversは、主に低価格のVPSを提供しており、頻繁にプロモーショ...

K8s コンポーネントの完全な分析: 知っておくべきすべての秘密

Kubernetes をデプロイすると、完全なクラスターが作成されます。 Kubernetes は、...

エッジコンピューティングがIoTアプリケーションを簡素化する方法

投資収益率 (ROI)、スキルの可用性、アップグレードに関する懸念にもかかわらず、IoT は企業に有...

フォーラムコミュニティを宣伝する際には、以下の重要なポイントに注意する必要があります。

皆さんも聞いたことがあると思います。フォーラムコミュニティはBBSとも呼ばれています。現在、主要なポ...

昇る太陽か、衰える太陽か?We-mediaは今後の発展の道について考えたことがあるだろうか?

国内の自主メディアが新星であろうと、すでに衰退期に入っているかにかかわらず、自主メディア連盟リストは...

Dianpingの実践経験共有:小さな画面でビッグデータを表示する方法

国内のモバイルインターネットは急速に発展しており、企業の具体的な実践事例を研究することは、この分野に...

「ダブル11」の準備はできていますか?

時間が経つのは早いですね。今日は11月1日、毎年恒例の「ダブル11」がもうすぐやってきます。 「ダブ...

企業は依然としてクラウド環境にセキュリティリスクを持ち込んでいる

組織がクラウドを選択する最大の理由の 1 つはセキュリティですが、クラウド セキュリティによって新た...

SEO入門書シリーズ: ウェブサイトのインクルード問題

ウェブページの包含の問題1. 自分のウェブサイト(独立したウェブサイトまたはブログ)を Baidu ...

TragicServers - 年間 21 ドル / メモリ 1g / スワップ 512 / コア 4 個 / ハードディスク 65g / トラフィック 2T

悲劇的なサーバー、ははは、このTragicServersを「言葉にできない」と翻訳するたびに、イライ...