After some offline discussion here's how I understand the new plan:

* This trigger will be for starting incremental GC only, not for stop-the-world.
* We try to mark at the same speed as new-space allocation, which (rule of
thumb) is about a third the speed of old-space allocation.
* We estimate the amount of memory that needs marking to be the live objects
from the last GC plus any objects allocated after that.
* Therefore we aim to start incremental marking when the allocated objects are
3x as big as the remaining distance to the allocation limit.
* We will also start incremental marking when the allocated objects are 3x as
big as the difference between the max heap size and the committed memory.
* These two rules together mean we expect to finish incremental marking before
we hit either the allocated object limit or the committed memory limit.

A consequence of this is that sometimes we will start incremental marking
immediately after a GC. For example if we have X=450 C=550 then we aim to mark 450Mbytes while we allocate 150Mbytes (one third), so we will start immediately, since we are only 150M from the 700M and we want to finish before C hits that
limit.

All this only makes sense if an incremental GC actually compacts at the end.
But I think this is the case now, even if we the incremental GC ends during an
idle notification?

https://codereview.chromium.org/1038653003/

--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to