私を説明させてください。
スループットコレクタを例にして説明します。 (別名パラレルコレクター)。ドキュメントでは、マイナーコレクションを行うために複数のスレッドを使用し、メジャーコレクション(シリアルコレクタと同じ)に対しては1つのスレッドを使用しています。
これは何かを理解することです。デフォルトでは、ほとんどの新しいシステムでは、JVMは若者世代と旧世代の2つの異なるガベージコレクタを使用します。私のマシンでは、私はヤングジェネレーションのための並行ニューコレクターと、古い世代のための並行マークアンドスイープコレクターを持っています。
マイナーコレクションは、JVMが新しいオブジェクトにスペースを割り当てることができないときにトリガーされます(注意:新しいオブジェクトは常にYoung GenerationのEdenエリアに割り当てられます)。
次の質問:
それは完全なGCによって何を意味します。a)それは両方のマイナーおよびメジャーコレクションが行われているということですか?またはb)フルGC ==主要コレクション?どちらですか?
と、
また、4んフルGCは、同様OldGenerationまたはYoungGenerationに影響を与えますか?
によって異なります。 JVMはすべてのメジャーコレクションをフルGCとして報告します。 [これらのフラグを試してみてくださいjava -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamp
]小児期の定義では、フルGCがマイナーに続いてメジャー(最初の世代が満員の場合は順序を入れ替えることができますが、その場合は最初に解放されてヤングジェネレーションからオブジェクトを受け取ることができます)です。
OK、戻ってください。 JVMはメジャーコレクション(旧世代(またはパーマ)生成時)を完全GCとみなします。以下は、ポイントを説明するために私が素早く書くことができたプログラムからのアウトプットです。最初の行はMinor GCで、2番目の行はMajor(Full)GCです。旧世代(CMS)でしか起こらなかったことがわかり、古い世代を1082Kから1034Kに減らすことができました。
11.431: [GC 11.431: [ParNew: 1152K->128K(1152K), 0.0009893 secs] 2111K->1210K(6464K), 0.0010182 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
17.882: [Full GC (System) 17.882: [CMS: 1082K->1034K(5312K), 0.0212614 secs] 2034K->1034K(6464K), [CMS Perm : 9426K->9410K(21248K)], 0.0213200 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
次の質問:
主が行われていたのに対し、A)、それはマイナーコレクションがまだ複数のスレッドを使用して行われることを意味しない場合シングルを使って?
はい。私の答えの始まりを見てください。若い世代と古い世代は、さまざまなコレクターによって提供されます。
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC
旧世代のために
、利用可能な選択肢は次のとおりです:
-XX:+UseParallelOldGC
若い世代のために、次のいずれかを使用することができます
-XX:+UseConcMarkSweepGC
+1。おかげで質問がありました – Imposter