当前位置:网站首页>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 .
边栏推荐
- Understand kotlin from the perspective of an architect
- Tabbar configuration at the bottom of wechat applet
- Basic operations of MySQL data table, addition, deletion and modification & DML
- Get data from the database when using JMeter for database assertion
- MySQL constraints
- abap查表程序
- [deploy pytoch project through onnx using tensorrt]
- Take you two minutes to quickly master the route and navigation of flutter
- Swift - enables textview to be highly adaptive
- ACID事务理论
猜你喜欢
HiEngine:可媲美本地的云原生内存数据库引擎
Multi table operation - Auto Association query
Sentinel sentinel mechanism of master automatic election in redis master-slave
Check the debug port information in rancher and do idea remote JVM debug
Automated test lifecycle
Multi table operation - sub query
[yolov5.yaml parsing]
Hiengine: comparable to the local cloud native memory database engine
Pytorch weight decay and dropout
July Huaqing learning-1
随机推荐
Is investment and finance suitable for girls? What financial products can girls buy?
MySQL function
MySQL stored procedure
报错ModuleNotFoundError: No module named ‘cv2.aruco‘
Conversion du format de données GPS [facile à comprendre]
什么是数字化存在?数字化转型要先从数字化存在开始
Course design of compilation principle --- formula calculator (a simple calculator with interface developed based on QT)
Linux Installation and deployment lamp (apache+mysql+php)
Two minutes will take you to quickly master the project structure, resources, dependencies and localization of flutter
16 channel water lamp experiment based on Proteus (assembly language)
Codeforces Round #804 (Div. 2)
Wireless WiFi learning 8-channel transmitting remote control module
Video networkstate property
Multi table operation - Auto Association query
ACID事务理论
Open3d mesh (surface) coloring
One article tells the latest and complete learning materials of flutter
Read and understand the rendering mechanism and principle of flutter's three trees
JS for loop number exception
[pytorch modifies the pre training model: there is little difference between the measured loading pre training model and the random initialization of the model]