Home  >  Article  >  Java  >  JVM Advanced Features-Garbage Collection Algorithm Tutorial

JVM Advanced Features-Garbage Collection Algorithm Tutorial

巴扎黑
巴扎黑Original
2017-06-26 11:41:531082browse

1. Mark-clear algorithm

Mark-clear algorithm is the most basic collection algorithm. The execution process is the same as the name. It is divided into two stages. Mark And clearing

First, mark the objects that need to be recycled. After the marking is completed, the marked objects will be recycled uniformly, as shown in The following figure.

For an introduction to the specific marking process, please refer to the "reachability analysis" introduced in the previous article "Determining Object Survival Algorithm for Garbage Collection"

       Recycling Previous state

Disadvantages:

1. The efficiency is not high. The efficiency of the two actions of marking and clearing is not too high

2. As can be seen from the picture, the memory after clearing There will be a large number of fragments in the object. The disadvantage of this is that when allocating memory space to a large object

, it may not be able to find a large enough continuous space, causing a GC to occur in advance.

2. Copy Algorithm

The principle of the copy algorithm is to divide the memory space into two parts of the same size. When garbage collection is required, copy the surviving objects

in the exhausted memory to another piece of memory, and then clear the previous piece of memory. As shown in the picture below

       

                                                         

       ##    Recycling Post-state

   

  

  Advantages: The efficiency of the replication algorithm is higher

  Disadvantages: This The space sacrificed by the algorithm is larger. After all, the usable memory space has become half of the original number

3. Marking sorting algorithm

 

This is an algorithm commonly used in the old generation, because the objects in the old generation are stored for a long time.

Marking and sorting algorithm The marking process is the same as the mark-cleaning algorithm, but the subsequent steps are different. The marking and sorting algorithm moves the surviving objects to one end,

Then clean up all the memory at the other end of the surviving end border, as shown in the figure below

## Previous state

4. Generational collection algorithm

Current virtual machines all use the generational collection algorithm. This algorithm divides the memory according to the different survival cycles of the objects. For different areas

Generally, the Java heap is divided into the new generation and the old generation

5. The algorithm used in the new generation

In commercial virtual machines, the replication algorithm is used to garbage collect the new generation. The reason is that 98% of the objects in the new generation have a very short survival time.

Therefore, it is not necessary Divide the memory into two blocks of the same size, leaving only a smaller space for surviving objects to be copied. Therefore,

memory is usually divided into a larger Eden area and two smaller survivor areas. When recycling, the surviving objects in the eden area and survivor area are copied to another area

In the survivor area, just clean up eden and the used servivor.

The above is the detailed content of JVM Advanced Features-Garbage Collection Algorithm Tutorial. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn