I must relunctantly admit that I did not get your question. Are you
asking about GC in general or how GC.start operates in particular?
Assuming the latter, here’s my rather naïve take on it.
Garbage collection is pretty complex facility that works deep inside a
VM or an interpreter, governed by its own rules and conditions. So from
where you call GC.start it may not even be possible at all to invoke all
needed machinery. Rather it is like saying to the VM/interprepter: start
garbage collection at you EARLIEST convenience, screw everything
regarding optimization and any other considerations. This “screw” part
is why it is usually a bad practice to causually intrude into GC realm,
as it may drastically affect the performance.
However, sometimes it may be good to have some communication path
between your script and GC. I remember using GC.start after some memory
intensive operations are ended when I kind of expect that it will be
quiet for some time, thus a good opportunity for GC to cleanup. Also, I
used it in some test cases in teardown().