JVMパラメータを学ぶ前に知っておくべきこと

JVMパラメータを学ぶ前に知っておくべきこと

[[323264]]

JVM パラメータとは何ですか?

通常、写真を撮るには携帯電話で十分ですが、愛好家は一眼レフカメラなどのより専門的な機器を使用します。 SLR カメラには P/A/S/M といういくつかのモードがあり、そのうち P はポイントアンドシュートモードです。プログラムは環境に応じてシャッタースピードと絞りサイズを自動的に設定し、比較的適切な露出効果を実現します。モードAは絞り優先です。ユーザーは絞りサイズとシャッタースピードを自分で設定し、カメラプログラムに決定を任せることができます。半自動モードに似ています。 S モードはシャッター優先モードで、シャッター速度をユーザーが設定できることを除いて A モードに似ています。最後のモードは M モードです。これは完全に手動のモードです。ユーザーはシャッタースピードや絞りサイズなどを調整できます。これはユーザーに多くのことを要求しますが、多くの専門家は自分の作品を撮影するために M モードを選択することがよくあります。

JVM をカメラ、JVM パラメータを絞りサイズやシャッタースピードなどのパラメータ値として想像することができます。これらのパラメータはプログラムの動作に大きな影響を与えます。

Java プログラムは JVM 上で実行され、JVM は環境に応じていくつかの JVM パラメータを自動的に設定しますが、これらのパラメータが最適であるとは保証されません。一部のパラメータは基本的に起動時に設定され、動作中に調整することはできません。 JVM でプログラムをより適切に実行できるようにするには、JVM パラメータについてある程度理解し、これらの JVM パラメータがどのようなシナリオで有効であるか、またどのような役割を果たすかを知る必要があります。たとえば、クラスがアンロードされることが予想されますか? JVM の動作を理解するために、操作中にログを印刷することはできますか?問題が発生した場合に、オンサイトデータを自動的に保持できますか?これらはすべて JVM パラメータを通じて設定できます。

JVM パラメータはいくつありますか?

カメラに調整できるパラメータ値はほんのわずかです。では、JVM パラメータはいくつあるのでしょうか?おそらく1,000以上あります。衝撃的ですか?はい、確かにたくさんあります。

PerfMa コミュニティにアクセスすると、これらの JVM パラメータをすべて確認できます (注: これは、JVM パラメータの経験を共有するために特別に設計された PerfMa コミュニティのディスカッション エリアです)。もちろん、必ずしもすべての JVM パラメータを明確に理解する必要はありませんが、パフォーマンス チューニングに役立ついくつかの一般的な JVM パラメータを理解することは必要です。

JVMパラメータが通常設定される場所

Java プログラムを起動するのは非常に簡単です。コマンドは次のようになります

  1. java メイン

上記の Main クラスがプログラムのスタートアップ クラスであることは誰もが知っています。 JVMが実行されると、このMainクラスで次のシグネチャを持つ関数が見つかります。

  1. 公共 静的void main(String args[])

ここで関数の args パラメータをどのように渡すのでしょうか?起動コマンドのメインクラスの後にスペースで区切って関連するパラメータを追加すると、JVMはこれらのパラメータを引数の一部として自動的に渡します。例:

  1. java メイン arg1 arg2

この方法では、args配列に2つの要素arg1とarg2が自動的に入力され、プログラムでこれらのパラメータを使用できるようになります。

arg1 と arg2 をプログラム パラメーターと呼びますが、このコースに関連するのはプログラム パラメーターではなく、JVM パラメーターです。では、JVM パラメータはどこに配置されるのでしょうか? JVMパラメータはメインクラスの前、javaコマンドの後に配置されます。例:

  1. java -Xmx100M メイン引数1 引数2

ここでの -Xmx100M は実際には JVM パラメータなので、すべての JVM パラメータはこの位置に配置されます。この位置にない場合、設定した JVM パラメータは無効になります。パラメータが期待どおりに動作しない場合は、まず JVM パラメータ設定の場所を確認してください。もちろん、JVM パラメータが設定と一致しなくなる他の理由がある可能性もあります。

JVMパラメータの書き方

JVM パラメータの書き方は?いくつかのオプションがあります。

  • 「-X」で始まる(例:-Xmx100M)
  • 「-XX:」で始まる(例:-XX:+UseG1GC)
  • -verbose:gc のように「-」で始まる

-X および - 開始パラメータは通常、1 つ以上の -XX: パラメータに変換されますが、これは単に記述方法を簡略化したものです。たとえば、-Xmx100M は JVM で自動的に -XX:MaxHeapSize=100M に変換され、-verbose:class は自動的に -XX:+TraceClassLoading -XX:+TraceClassUnloading に変換されます。

Flagsパラメータを介してJVMパラメータファイルを指定します

JVM パラメータがソース コードとともにリリースされている場合、JVM パラメータのみを変更するには、ブランチをプルしてコードを送信する必要があります。これはあまりユーザーフレンドリーではありません。何か良い解決策はあるでしょうか?

起動パラメータにパラメータを設定するだけで済みます。このパラメータは次のようになります。

  1. java -XX:Flags=/home/admin/flags メイン引数1引数2

このパラメータを設定したら、サービスの /home/admin ディレクトリにフラグ ファイルを作成し、このファイルにすべての JVM パラメータを指定するだけです。ただし、フラグ ファイルにパラメータを書き込むにはいくつかの要件があります。 -X などのパラメータは設定できませんが、同等の -XX パラメータに置き換えることができます。たとえば、-Xmx100M は -XX:MaxHeapSize=100M にのみ置き換えることができます。同時に、ファイル内に -XX: が表示されないようにしてください。キー=値または +/- キーだけです。異なるパラメータは改行またはスペースで区切ることができます。たとえば、フラグ ファイルの内容は次のようになります。

  1. 最大ヒープサイズ=8G +G1GC使用

実際、それは

  1. -Xmx8G -XX:+G1GCを使用する

これを確認するには、-XX:+PrintVMOptionsを追加して、設定されたJVMパラメータを印刷します。たとえば、

  1. java -XX:Flags=/home/admin/flags -XX:+PrintVMOptions メイン引数1 引数2

VMOptionsFileパラメータを使用してJVMパラメータファイルを指定します。

上記の Flags パラメータの使用は、パラメータの設定が通常の記述方法と異なるため、扱いにくい場合があります。 JDK バージョンが 1.8 より大きい場合、JVM は Flags の代わりに VMOptionsFile というよりユーザーフレンドリーなパラメータを提供します。これもファイルを指定します。このファイル内の JVM パラメータの記述方法は、java コマンドの後に記述する JVM パラメータとまったく同じです。

  1. java -XX:VMOptionsFile=/home/admin/flags メイン引数1 引数2

フラグファイルには次のように記述できます。

  1. -Xmx8G -XX:+G1GCを使用する

すごく便利じゃないですか?

[この記事は51CTOコラムニストのLi Jiapeng氏によるオリジナル記事です。転載する場合は、WeChatパブリックアカウント(你假笨、id:lovestblog)を通じて著者に連絡し、許可を得てください。

この著者の他の記事を読むにはここをクリックしてください

<<:  クラウドサービスの価値を最大化するにはどうすればよいでしょうか?

>>:  Java仮想マシンオブジェクトの生存判定とガベージコレクションアルゴリズム

推薦する

farnoX-2.5 ユーロ/1g RAM/50g HDD/1gbps/無制限トラフィック/ドイツ

Farno は 2009 年に設立されました。同社はドイツに登録されており (登録番号: HRB 1...

製品を市場に出すにはどうすればいいですか?顧客獲得チャネルを見つけるための 9 つのヒント!

製品を市場に投入し、初期の認知度を得た後、どのようにユーザーベースをさらに拡大できるでしょうか?顧客...

pzea-29 USD/年/1 GB メモリ/30 GB ハードディスク/800 GB トラフィック/10 IP/ロサンゼルス/フリーモント

- の kvmla.pro の VPS ブランド peza.com がプロモーションを行っています。...

Windows 仮想マシンを一括でチェックおよび修復する方法

01 - システム概要当社には、社内アプリケーションとテスト システムをホストする小規模なプライベー...

Aruba、インテリジェント デジタル ワークプレイスの潜在能力を解き放つデジタル革命に関するレポートを発表

世界的な調査によると、スマートデジタルワークプレイスのメリットは生産性の向上だけにとどまらないが、企...

初期開発から存続までのローカルポータル運営

ウェブサイトの運営は極めて重要な部分であり、ローカル ウェブサイトはオンラインとオフラインの運営を組...

在庫いっぱい (5.25): bandwagonhost/banwagong vps-128M から 4g のメモリ VPS-最低 $3.99/年

bandwagonhostの特別版は長い間在庫切れで、多くの友人が買いたいのに買えなかった。今なら在...

rebate.com の崩壊についてのコメント: 欲のせいで常識を拒否できるでしょうか?

多くの消費者還元ウェブサイトが次々と崩壊している。江西省の「ワンダフルライフ」、福建省の「100%リ...

中国検索は検索戦争を混乱させ、その統合能力はまだテストされていない

検索エンジンはインターネットへの最初の入り口であり、5億人を超えるユーザーベースを擁し、常に「戦場」...

Baidu に新しいサイトの記事を素早くインデックスさせる方法

初心者のウェブマスターにとっては、古いウェブサイトを運営する方がはるかに便利です。良いランキングを得...

Kubernetes リソース トポロジを考慮したスケジュール最適化

著者 |テンセントスターコンピューティングチーム1. 背景1.1 問題の起源近年、テンセント社内の自...

パーソナライズ検索とは何ですか? その主な機能は何ですか?

数年前、同じ検索ボックスに同じキーワードを入力すると、全世界が同じ結果ページを見ていました。今は状況...

自然、実用主義、責任が2012年のSEOに対する私の理解を構成しています

2012 年が過ぎようとしています。2013 年という新しい年を迎え、ウェブマスターの皆さんは将来に...

エッジコンピューティングは IoT の状況をどのように変えているのでしょうか?

リアルタイムの更新と迅速な意思決定が求められる世界では、データ応答の遅延は煩わしいものになる可能性が...

企業ウェブサイトの SEO 診断プランの書き方

みなさんこんにちは。私はShi Touです。昨日の記事「企業ウェブサイトの SEO 診断におけるいく...