当前位置:网站首页>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 .
边栏推荐
- Why learn harmonyos and how to get started quickly?
- 互联网公司实习岗位选择与简易版职业发展规划
- 无线WIFI学习型8路发射遥控模块
- Thoughts and suggestions on the construction of intelligent management and control system platform for safe production in petrochemical enterprises
- Network five whip
- Liunx prohibit Ping explain the different usage of traceroute
- Take you two minutes to quickly master the route and navigation of flutter
- Sentinel sentinel mechanism of master automatic election in redis master-slave
- GPS data format conversion [easy to understand]
- Matlab boundarymask function (find the boundary of the divided area)
猜你喜欢
[mainstream nivida graphics card deep learning / reinforcement learning /ai computing power summary]
MySQL index - extended data
What is digital existence? Digital transformation starts with digital existence
你做自动化测试为什么总是失败?
The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix
[pytorch pre training model modification, addition and deletion of specific layers]
Error modulenotfounderror: no module named 'cv2 aruco‘
【SingleShotMultiBoxDetector(SSD,单步多框目标检测)】
yolov5目標檢測神經網絡——損失函數計算原理
Why do you always fail in automated tests?
随机推荐
Acid transaction theory
Open3d mesh (surface) coloring
Understanding the architecture type of mobile CPU
JS for循环 循环次数异常
Design of music box based on assembly language
Troubleshooting of high memory usage of redis in a production environment
[singleshotmultiboxdetector (SSD, single step multi frame target detection)]
A guide to threaded and asynchronous UI development in the "quick start fluent Development Series tutorials"
Which domestic cloud management platform manufacturer is good in 2022? Why?
【主流Nivida显卡深度学习/强化学习/AI算力汇总】
[pytorch pre training model modification, addition and deletion of specific layers]
Uniapp + unicloud + Unipay realize wechat applet payment function
【pytorch 修改预训练模型:实测加载预训练模型与模型随机初始化差别不大】
Principle of persistence mechanism of redis
Take you two minutes to quickly master the route and navigation of flutter
7月华清学习-1
[deploy pytoch project through onnx using tensorrt]
Video networkstate property
[upsampling method opencv interpolation]
Recyclerview paging slide