/* * Copyright (C) 2021 The LineageOS Project * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #define HEAPSTARTSIZE_PROP "dalvik.vm.heapstartsize" #define HEAPGROWTHLIMIT_PROP "dalvik.vm.heapgrowthlimit" #define HEAPSIZE_PROP "dalvik.vm.heapsize" #define HEAPMINFREE_PROP "dalvik.vm.heapminfree" #define HEAPMAXFREE_PROP "dalvik.vm.heapmaxfree" #define HEAPTARGETUTILIZATION_PROP "dalvik.vm.heaptargetutilization" #define GB(b) (b * 1024ull * 1024 * 1024) static const dalvik_heap_info_t dalvik_heap_info_12288 = { .heapstartsize = "24m", .heapgrowthlimit = "512m", .heapsize = "512m", .heapminfree = "1m", .heapmaxfree = "12m", .heaptargetutilization = "0.75", }; static const dalvik_heap_info_t dalvik_heap_info_8192 = { .heapstartsize = "24m", .heapgrowthlimit = "512m", .heapsize = "512m", .heapminfree = "1m", .heapmaxfree = "12m", .heaptargetutilization = "0.75", }; static const dalvik_heap_info_t dalvik_heap_info_6144 = { .heapstartsize = "16m", .heapgrowthlimit = "384m", .heapsize = "512m", .heapminfree = "512k", .heapmaxfree = "8m", .heaptargetutilization = "0.75", }; void set_dalvik_heap() { struct sysinfo sys; const dalvik_heap_info_t *dhi; sysinfo(&sys); if (sys.totalram > GB(11)) dhi = &dalvik_heap_info_12288; else if (sys.totalram > GB(7)) dhi = &dalvik_heap_info_8192; else dhi = &dalvik_heap_info_6144; property_override(HEAPSTARTSIZE_PROP, dhi->heapstartsize); property_override(HEAPGROWTHLIMIT_PROP, dhi->heapgrowthlimit); property_override(HEAPSIZE_PROP, dhi->heapsize); property_override(HEAPTARGETUTILIZATION_PROP, dhi->heaptargetutilization); property_override(HEAPMINFREE_PROP, dhi->heapminfree); property_override(HEAPMAXFREE_PROP, dhi->heapmaxfree); }