Reviewers: Hannes Payer,
Message:
PTAL
Description:
Avoid excessive GCs in small heaps.
Small heaps and small heap growing factor can lead to excessive GCs in
corner
cases.
Consider function F(old_gen_size, factor) that returns the number of bytes
that
have to be allocated in the old generation to start incremental marking.
F(4MB, 1.1) = 4MB (because of kMinimumOldGenerationAllocationLimit)
F(6MB, 1.1) = 2MB (because of kMinimumOldGenerationAllocationLimit)
F(8MB, 1.1) = 800KB
Funtion F should be monotonic in old_gen_size, but it currently has a
minimum
at kMinimumOldGenerationAllocationLimit.
This CL makes F monotonic.
BUG=
Please review this at https://codereview.chromium.org/1144223002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+1, -1 lines):
M src/heap/heap.cc
Index: src/heap/heap.cc
diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index
62c3821ed7cf55af13546032cf2ba46db862c722..b51eb0c33be315d057199adb16d89ecfc3f59442
100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -5298,7 +5298,7 @@ intptr_t
Heap::CalculateOldGenerationAllocationLimit(double factor,
CHECK(factor > 1.0);
CHECK(old_gen_size > 0);
intptr_t limit = static_cast<intptr_t>(old_gen_size * factor);
- limit = Max(limit, kMinimumOldGenerationAllocationLimit);
+ limit = Max(limit, old_gen_size + kMinimumOldGenerationAllocationLimit);
limit += new_space_.Capacity();
intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_)
/ 2;
return Min(limit, halfway_to_the_max);
--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.