当前位置:网站首页>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 = AReachability 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 .
边栏推荐
- Image hyperspectral experiment: srcnn/fsrcnn
- Splunk configuration 163 mailbox alarm
- Flutter2 heavy release supports web and desktop applications
- [pytorch modifies the pre training model: there is little difference between the measured loading pre training model and the random initialization of the model]
- Basic operations of MySQL data table, addition, deletion and modification & DML
- Multi table operation - Auto Association query
- The evolution of mobile cross platform technology
- 互联网公司实习岗位选择与简易版职业发展规划
- Tabbar configuration at the bottom of wechat applet
- MySQL installation, Windows version
猜你喜欢
![[configuration method of win11 multi-user simultaneous login remote desktop]](/img/8f/eab81f089b236c4527a9866b2cfc25.png)
[configuration method of win11 multi-user simultaneous login remote desktop]

Hiengine: comparable to the local cloud native memory database engine

Check the debug port information in rancher and do idea remote JVM debug

报错ModuleNotFoundError: No module named ‘cv2.aruco‘

Matlab struct function (structure array)

Get all stock data of big a

嵌入式软件架构设计-消息交互
![[cloud native | kubernetes] actual battle of ingress case (13)](/img/1a/9404f6dcedd15827fa45f8f6f4c093.png)
[cloud native | kubernetes] actual battle of ingress case (13)

Linux安装部署LAMP(Apache+MySQL+PHP)

Matlab label2idx function (convert the label matrix into a cell array with linear index)
随机推荐
信息服务器怎么恢复,服务器数据恢复怎么弄[通俗易懂]
[deploy pytoch project through onnx using tensorrt]
报错ModuleNotFoundError: No module named ‘cv2.aruco‘
Design of music box based on assembly language
MySQL installation, Windows version
yolov5目標檢測神經網絡——損失函數計算原理
July Huaqing learning-1
一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用
Video networkstate property
[upsampling method opencv interpolation]
Deep discussion on the decoding of sent protocol
Get data from the database when using JMeter for database assertion
图像超分实验:SRCNN/FSRCNN
ABAP table lookup program
自动化测试生命周期
多表操作-自关联查询
[yolov3 loss function]
MySQL splits strings for conditional queries
ACID事务理论
Splunk configuration 163 mailbox alarm