当前位置:网站首页>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
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 :
- Who is rubbish ?( Which memory to recycle )
- When to collect ?
- 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 :
- Reference counting algorithm
- 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 .
If the object is found to have no relationship with GC Roots Linked reference chain , Then it will be marked for the first time .
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 .
边栏推荐
- [cloud native | kubernetes] actual battle of ingress case (13)
- Codeforces Round #804 (Div. 2)
- 嵌入式软件架构设计-消息交互
- 16 channel water lamp experiment based on Proteus (assembly language)
- Understanding the architecture type of mobile CPU
- PXE启动配置及原理
- GPS data format conversion [easy to understand]
- 查看rancher中debug端口信息,并做IDEA Remote Jvm Debug
- 强化学习-学习笔记3 | 策略学习
- [loss functions of L1, L2 and smooth L1]
猜你喜欢
yolov5目標檢測神經網絡——損失函數計算原理
[deploy pytoch project through onnx using tensorrt]
Matlab struct function (structure array)
调查显示传统数据安全工具在60%情况下无法抵御勒索软件攻击
Seven ways to achieve vertical centering
Redis master-slave mode
Liunx prohibit Ping explain the different usage of traceroute
Pytorch MLP
[mainstream nivida graphics card deep learning / reinforcement learning /ai computing power summary]
多表操作-自关联查询
随机推荐
【SingleShotMultiBoxDetector(SSD,单步多框目标检测)】
Understand kotlin from the perspective of an architect
Liunx prohibit Ping explain the different usage of traceroute
Codeworks 5 questions per day (1700 average) - day 5
Matlab label2idx function (convert the label matrix into a cell array with linear index)
Pytorch softmax regression
Linux Installation and deployment lamp (apache+mysql+php)
GPS data format conversion [easy to understand]
Application of a class of identities (vandermond convolution and hypergeometric functions)
Principle of redis cluster mode
Automated test lifecycle
Hiengine: comparable to the local cloud native memory database engine
MySQL regular expression
July Huaqing learning-1
Embedded software architecture design - message interaction
MySQL data table operation DDL & data type
【load dataset】
Codeforces Round #804 (Div. 2)
Principle of persistence mechanism of redis
[yolov5.yaml parsing]