当前位置:网站首页>JVM garbage collector part 1

JVM garbage collector part 1

2022-07-06 17:14:00 Smart popcorn

1. Garbage collector classification

Press Working mode classification , Garbage collectors can be divided into :

  • Concurrent garbage collection
  • Exclusive garbage collection

Hairstyle It means that multiple threads perform garbage collection alternately , The pause time of the program is reduced .

exclusive It means that once garbage collection is performed , Stop other user threads , That is, once garbage collection is performed , The user program will not work .

Press Number of threads classification , Garbage collectors can be divided into :

  • Serial garbage collector
  • Parallel garbage collector
  • Concurrent garbage collector

Serial GC Only suitable for single core CPU Upper use , It works better , It's not used now .

parallel GC It refers to multiple threads performing garbage collection at the same time , But it is still exclusive , There will be stop the world The phenomenon of .

Concurrent GC It refers to the alternate execution of garbage collection threads and user threads , There is no need to pause .

Press Pieces processing classification , Garbage collectors can be divided into :

  • Compression garbage collector
  • Uncompressed garbage collector

This is mainly aimed at the mark removal algorithm , Some recyclers do not use this algorithm , That's why there is this classification .

Press The working memory classification , Garbage collectors can be divided into the garbage collection of the new generation and the old generation , Because these two areas are very different , Different garbage collectors are generated according to these two areas .

2. assessment GC Performance index of

There are many kinds of indicators , Briefly introduce .

throughput : It refers to the proportion of user thread execution time in the total time , Of course, the bigger the better .

Garbage collection expenses : Refers to the proportion of garbage collection threads in the total time , The smaller the better. .

Pause time : This is what we often say STW, No matter which garbage collector has a pause time , This is caused by the garbage collection thread , We hope the shorter the better .

Collection frequency : It refers to the proportion of garbage collection times in a certain period of time , It depends on the situation , When the frequency is high , Unit pause time is short , The frequency is low , Unit pause time is long .

Memory footprint : Generally refers to the occupation of the heap area , The larger it is, the more objects it can store .

Fast : A bit abstract , We hope that objects can be recycled as soon as they are not used .

Notice the bold noun in front of me ?

These make up the Impossible Triangle , Too much memory , The longer it takes to garbage collect objects once , It also makes the pause time longer , But throughput can be improved , Anyway, the memory is small , Throughput gets lower , But the pause time will become smaller .

But there is still a specific standard , Because memory is relatively cheap , We hope that under the premise of maximum throughput , Can reduce pause time .

3. The history of garbage collector

Just to understand , Here is a cut-off picture , You can simply look at the content in the red box .

image.png

4. Seven classic garbage collectors

Serial GC:Serial,Serial Old, The difference between the two is that the former is recycled by the Cenozoic , The latter recycles the elderly .

parallel GC:ParNew,Parallel Scavenge,Parallel Old.

Concurrent GC:CMS,G1, among G1 Count the all-around players .

image.png

5. The combination of garbage collectors

Need to know , Not one JVM Just use a garbage collector , They are used together , The combination is as follows , The dotted line indicates that it will be eliminated in later versions .

image.png

6. See the default garbage collector

Before any program starts , We can join in JVM Parameters , Print out what the default garbage collector is .

-XX:+PrintCommandLineFlags

The results are as follows ,jdk The default is ParallelGC

-XX:InitialHeapSize=265723392 -XX:MaxHeapSize=4251574272 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC

We will focus on different garbage collectors in the next article .

原网站

版权声明
本文为[Smart popcorn]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060928058283.html