2016-05-02 7 views
0

私はGoogleで検索して記事のほとんどはマイナーGCがトリガーされたのはいつですか?

「JVMが新しいオブジェクトのためのスペースを割り当てることができないとき、マイナーGC常にトリガされた」

がと言ったことがわかった。しかしVisualVMのから、私はマイナーGCを見つけました非常に頻繁に起こる。私はエデンのスペースがreclamedされることを見ることができますし、そうでなければ空でないもの、s1はクリアされます。 だから私はエデン世代が一杯になると、マイナーGCがトリガされていないと思います。新しいオブジェクトの enter image description here

+1

[Javaで完全なガベージコレクションをトリガーするのは何ですか?](http://stackoverflow.com/questions/9546392/what-triggers-a-full-garbage-collection-in-java) – Ducaz035

+0

しかし、私はマイナーgcがトリガされたときに、フルGCではないときに尋ねる。 –

答えて

2

はマイナーGCの理由です:グラフ1.In

、メタスペースは、長い時間のためにインターンはマイナーGCにつながるフルGC、に非常にこれらのリード高いです。

2.Andもう一点は、理由は、割り当てられた犯したの左のグラフでGCが正確に行われているときに我々が言うことができない使用しているメモリを見て、これの右側に見ていない、ありますグラフは、Eden空間内のコミットされたメモリが使用されたメモリと等しい場合、マイナーGCが発生します。

3. 1つの理由と2つの理由のために、最終的にマイナーなGCが発生します。

0

配分はエデン領域で起こります。エデン領域がいっぱいになったとき、生存者は生存者空間にコピーされ、エデンスペースの残りは捨てられます。サバイバースペースが一杯になったときにオブジェクトが他のサバイバースペース(S0 < - > S1)にコピーされ、コピーの特定の数の後に(3)継続生存をヒープにコピーされます。これは、オブジェクトを割り当てるごとに常に発生します。主要なGCは、完全なヒープがオブジェクトに対して掃引され、メインヒープに生存者をコピーするためこれ以上のスペースがない場合にトリガーされたときです。あなたは、以下の添付のグラフに従って