Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Garbage collect certain object

Is is possible to garbage collect a certain object in Pharo?

E.g. I know that certain object is not (should be not) referenced by any other object. And it takes a lot of space. Does it make sense to just run general garbage collect on system? Or it is possible to remove from heap just specific object/tree

like image 460
Uko Avatar asked Aug 08 '26 22:08

Uko


2 Answers

Smalltalk garbage collectors can't garbage-collect just a single object.

There are two basic techniques used - generation scavenging and mark and sweep. Generation scavenging works on new and relatively new objects by copying the used objects into another unused space and ignoring all the garbage. Objects that get copied a lot of times are moved to "old space". Old space is garbage collected by a mark and sweep algorithm. This algorithm loops through all Smalltalk objects and marks them as "unmarked". It then traverses through all accessible objects and marks them as "marked". In the final sweep, anything that's still marked as "unmarked" is freed.

There's no way to run either algorithm on a single object.

like image 101
David Buck Avatar answered Aug 10 '26 13:08

David Buck


No, it does not makes sense, and is not possible.

Also it does not make sense to manually run the garbage collector (which you can do, of course)... system should run gc when needed and you will get that space back.

The whole purpose of a gc is that you do not have to take care about that.

like image 37
EstebanLM Avatar answered Aug 10 '26 13:08

EstebanLM



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!