<div dir="ltr">on 1. Such GC on a suspended process sometimes is DELAYED.<div>Depends which opcode caused this, some opcodes such as gc_bif have Live argument which allows running a GC inline, other will have to call GC but DELAY it.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-12-19 13:46 GMT+01:00 Dmytro Lytovchenko <span dir="ltr"><<a href="mailto:dmytro.lytovchenko@gmail.com" target="_blank">dmytro.lytovchenko@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">1. When the process is suspended some external events may happen, such as a kill signal passed to a process. Its value has to be allocated on the process heap, so it is possible that GC is invoked.<div>If i remember right, on heap overflow messages will land in heap fragments. Next GC will consolidate them into a single new heap.</div><div><br><div>2. ProcBins are (iirc) onheap binaries <64 bytes. Each larger binary stored on heap is a reference counted pointer to binary heap. Until refcount is >0 the binary remains locked.</div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-12-19 13:29 GMT+01:00 Salikhov Dinislam <span dir="ltr"><<a href="mailto:Dinislam.Salikhov@kaspersky.com" target="_blank">Dinislam.Salikhov@kaspersky.<wbr>com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<br>
I've got a couple of questions about garbage collection:<br>
1. AFAIU, a process's heap is garbage collected when the process is executed. A process creates and destroys new objects and when there is no enough room for the new object in the heap, GC is invoked.<br>
When the process is in scheduler's wait queue, then no new objects are created, so GC isn't called.<br>
The only exception, I see, is when new messages are sent to suspended process: they are to be kept in receiver's heap and it may lead to GC invoked.<br>
Is my understanding correct? Or there are other possibilities to GC suspended process?<br>
<br>
2. In OTP-19.2 sources, erts/emulator/beam/erl_gc.c:sw<wbr>eep_off_heap() may reallocate ProcBins including the struct binary they point to. The list of ProcBins to realloc is received in link_live_proc_bin(). What prevents us to reallocate the binary that may be referenced by another process?<span class="m_-7601392962134667083HOEnZb"><font color="#888888"><br>
<br>
Salikhov Dinislam<br>
______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>