· Jul 18

Some questions about garbage collector


I am looking for information about garbage collector. I already looked at documentation but I could not find anything about it.
Here is some questions :

1) is there a garbage collector per process (each process has it's own memory and GC is done per process) or is it global (eg: shared memory) ?
I know there is some memory allocated per process at startup but also globally (gmheap).

2) when a GC / cleanup occurs somewhere,  is it possible that it block the other processes for a short moment ? (eg: a "stop the world" GC that pause everything while job is being done).

3) is it possible to gather information about GC in portal or using some utility ? (Eg: number of GCs, how much time it took, ...).

Note : this question is not related to global buffers (which AFAIK is a totally different thing).

Product version: IRIS 2021.1
$ZV: IRIS for Windows (x86-64) 2021.1 (Build 215U) Wed Jun 9 2021 09:39:22 EDT
Discussion (3)2
Log in or sign up to continue

The garbage collector is somewhat an internal process which is why I believe it is sparsely documented. I'd echo Dmitry that understanding your concern would help.

I think what is documented generally covers a high level understanding - that being that there is a GARCOL process. And that blocks are marked freed after a large kill by this process, to be freed in the background.

Echoing what Vic and Dmitry have mentioned.  GARCOL cleans up large KILLs, so it's a database operation.  Your post seems to ask a different question, akin to Java object garbage collection. 

I've been quite surprised to see how much work gets done by IRIS processes with scant process memory; I suppose because it's so easy to use globals.

Understanding what you are experiencing and trying to do would help a lot.