当前位置:网站首页>Learn garbage collection 01 of JVM -- garbage collection for the first time and life and death judgment

Learn garbage collection 01 of JVM -- garbage collection for the first time and life and death judgment

2022-07-05 12:15:00 The king of early rising

If this article is the first time you intend to learn about garbage collection , With pleasure , I should not miss people's future . Ha ha ha ha ha ha ha ha ha

Catalog

What is garbage collection ?

Who is rubbish ?

Reference counting algorithm

Reachability analysis algorithm

Attention! : Unreachable does not mean “ There is no doubt that I will die ”


What is garbage collection ?

Also called garbage collection mechanism , English is Garbage Collector, abbreviation GC.

Garbage collection is to recycle unused data in memory , Free up memory .

There are three problems that need to be solved :

  1. Who is rubbish ?( Which memory to recycle )
  2. When to collect ?
  3. How to collect it ?

Who is rubbish ?

        Java Language , Everything is the object . We put “ die ” The object of is treated as garbage .

         die : It means that it can no longer be used in any way . It can be understood in this way : We can't find this object , The reference of this object has been invalidated , Cannot be located , Can't be used .

There are two main ways to judge the life and death of an object :

  1. Reference counting algorithm
  2. Reachability analysis algorithm

Reference counting algorithm

         Object when referenced , Count +1;

         When a reference on a body fails , Count -1.

When the reference count of an object is 0 when , It can be considered that there is no quotation on him , already “ die ”.

But there will be some accidents in this method , It often needs other methods to solve these unexpected situations .

such as : Imagine the two nodes of the linked list A and B Only have the reference of the other party . But no one next = A perhaps B. node A、B Has lost contact with the head node . At this time, these two objects can no longer be accessed , The reference count on both objects is not 0 .

A.next = B
B.next = A

Reachability analysis algorithm

        Java This is the algorithm used .

         Algorithm ideas : Call a series “GC Roots” As the starting node set , Start with these nodes , Search down by reference , The path of the search process is called “ References to the chain ”, If an object arrives at GC Roots There is no reference chain between , From GC Roots When this object is not reachable , It is proved that this object can no longer be used .

GC Roots It can be understood as a reference starting point that can be directly accessed .

Attention! : Unreachable does not mean “ There is no doubt that I will die ”

        Reachability analysis algorithm in judging death , It takes at least two markups .

  1. If the object is found to have no relationship with GC Roots Linked reference chain , Then it will be marked for the first time .

  2. Check whether the object needs to execute finalize() Method ( The relevant introduction is below ), If it is necessary to carry out , It is called F-Queue In the queue of . If in execution finalize() After method , Object becomes reachable , Is removed from the queue . The rest in the queue will be marked twice , Basically declared dead . If it is not necessary to perform , Then there's no nonsense , It's not saved , Die straight away .

        finalize() The method is Object Class , stay GC( Short for garbage collection ) Before you are ready to free up the memory space occupied by the object , It will first call finalize() Method .

Keep early hours , take care . The king of early rising wishes you good luck .

原网站

版权声明
本文为[The king of early rising]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140531327948.html