[K/N] Adjust values for the initial and minimum heap sizes ^KT-61092
This commit is contained in:
committed by
Space Team
parent
5ee50f50b5
commit
efa59eb589
@@ -11,6 +11,12 @@
|
|||||||
|
|
||||||
namespace kotlin::gcScheduler {
|
namespace kotlin::gcScheduler {
|
||||||
|
|
||||||
|
#if KONAN_WATCHOS
|
||||||
|
constexpr int64_t kDefaultTargetHeapBytes = 10 * 1024 * 1024;
|
||||||
|
#else
|
||||||
|
constexpr int64_t kDefaultTargetHeapBytes = 100 * 1024 * 1024;
|
||||||
|
#endif
|
||||||
|
|
||||||
// NOTE: When changing default values, reflect them in GC.kt as well.
|
// NOTE: When changing default values, reflect them in GC.kt as well.
|
||||||
struct GCSchedulerConfig {
|
struct GCSchedulerConfig {
|
||||||
enum class MutatorAssists {
|
enum class MutatorAssists {
|
||||||
@@ -27,13 +33,13 @@ struct GCSchedulerConfig {
|
|||||||
// become bigger than this value, and `mutatorAssists` are enabled the GC will
|
// become bigger than this value, and `mutatorAssists` are enabled the GC will
|
||||||
// stop the world and wait until current epoch finishes.
|
// stop the world and wait until current epoch finishes.
|
||||||
// Adapts after each GC epoch when `autoTune = true`.
|
// Adapts after each GC epoch when `autoTune = true`.
|
||||||
std::atomic<int64_t> targetHeapBytes = 1024 * 1024;
|
std::atomic<int64_t> targetHeapBytes = kDefaultTargetHeapBytes;
|
||||||
// The rate at which `targetHeapBytes` changes when `autoTune = true`. Concretely: if after the collection
|
// The rate at which `targetHeapBytes` changes when `autoTune = true`. Concretely: if after the collection
|
||||||
// `N` object bytes remain in the heap, the next `targetHeapBytes` will be `N / targetHeapUtilization` capped
|
// `N` object bytes remain in the heap, the next `targetHeapBytes` will be `N / targetHeapUtilization` capped
|
||||||
// between `minHeapBytes` and `maxHeapBytes`.
|
// between `minHeapBytes` and `maxHeapBytes`.
|
||||||
std::atomic<double> targetHeapUtilization = 0.5;
|
std::atomic<double> targetHeapUtilization = 0.5;
|
||||||
// The minimum value of `targetHeapBytes` for `autoTune = true`
|
// The minimum value of `targetHeapBytes` for `autoTune = true`
|
||||||
std::atomic<int64_t> minHeapBytes = 1024 * 1024;
|
std::atomic<int64_t> minHeapBytes = 5 * 1024 * 1024; // In `custom` allocator pages are 256KiB. 5MiB here is 20 pages.
|
||||||
// The maximum value of `targetHeapBytes` for `autoTune = true`
|
// The maximum value of `targetHeapBytes` for `autoTune = true`
|
||||||
std::atomic<int64_t> maxHeapBytes = std::numeric_limits<int64_t>::max();
|
std::atomic<int64_t> maxHeapBytes = std::numeric_limits<int64_t>::max();
|
||||||
// GC will be triggered when object bytes reach `heapTriggerCoefficient * targetHeapBytes`.
|
// GC will be triggered when object bytes reach `heapTriggerCoefficient * targetHeapBytes`.
|
||||||
|
|||||||
@@ -201,7 +201,7 @@ public object GC {
|
|||||||
* Note, that if after a collection heapBytes > [targetHeapBytes] (which may happen if [autotune] is false,
|
* Note, that if after a collection heapBytes > [targetHeapBytes] (which may happen if [autotune] is false,
|
||||||
* or [maxHeapBytes] is set too low), the next collection will be triggered almost immediately.
|
* or [maxHeapBytes] is set too low), the next collection will be triggered almost immediately.
|
||||||
*
|
*
|
||||||
* Default: 1 MiB
|
* Default: 100 MiB (10 MiB on watchOS)
|
||||||
*
|
*
|
||||||
* Unused in legacy MM.
|
* Unused in legacy MM.
|
||||||
*
|
*
|
||||||
@@ -235,7 +235,7 @@ public object GC {
|
|||||||
* The minimum value for [targetHeapBytes]
|
* The minimum value for [targetHeapBytes]
|
||||||
* Only used if [autotune] is true. See [targetHeapBytes] for more details.
|
* Only used if [autotune] is true. See [targetHeapBytes] for more details.
|
||||||
*
|
*
|
||||||
* Default: 1 MiB
|
* Default: 5 MiB
|
||||||
*
|
*
|
||||||
* Unused in legacy MM.
|
* Unused in legacy MM.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user