Loading services/core/java/com/android/server/am/ProcessList.java 100644 → 100755 +35 −4 Original line number Diff line number Diff line Loading @@ -167,6 +167,17 @@ final class ProcessList { FOREGROUND_APP_ADJ, VISIBLE_APP_ADJ, PERCEPTIBLE_APP_ADJ, BACKUP_APP_ADJ, CACHED_APP_MIN_ADJ, CACHED_APP_MAX_ADJ }; // These are the low-end OOM level limits for 32bit private final int[] mOomMinFreeLow32Bit = new int[] { 8192, 12288, 16384, 24576, 28672, 32768 }; // These are the high-end OOM level limits for 32bit private final int[] mOomMinFreeHigh32Bit = new int[] { 49152, 61440, 73728, 86016, 98304, 122880 }; // These are the low-end OOM level limits. This is appropriate for an // HVGA or smaller phone with less than 512MB. Values are in KB. private final int[] mOomMinFreeLow = new int[] { Loading Loading @@ -235,16 +246,36 @@ final class ProcessList { Slog.i("XXXXXX", "minfree_adj=" + minfree_adj + " minfree_abs=" + minfree_abs); } if (Build.SUPPORTED_64_BIT_ABIS.length > 0) { final boolean is64bit = Build.SUPPORTED_64_BIT_ABIS.length > 0; if (is64bit) { // Increase the high min-free levels for cached processes for 64-bit mOomMinFreeHigh[4] = 225000; mOomMinFreeHigh[5] = 325000; } for (int i=0; i<mOomAdj.length; i++) { int low = mOomMinFreeLow[i]; int high = mOomMinFreeHigh[i]; int low = 0; int high = 0; if (is64bit) { // On 64 bit devices, we consume more baseline RAM, because 64 bit is cool! // To avoid being all pagey and stuff, scale up the memory levels to // give us some breathing room. Slog.i("XXXXXX", "choosing minFree values for 64 Bit"); low = mOomMinFreeLow[i]; high = mOomMinFreeHigh[i]; mOomMinFree[i] = (int)(low + ((high-low)*scale)); // More scaling up not required yet // mOomMinFree[i] = (3*mOomMinFree[i])/2; } else { Slog.i("XXXXXX", "choosing minFree values for 32 Bit"); low = mOomMinFreeLow32Bit[i]; high = mOomMinFreeHigh32Bit[i]; mOomMinFree[i] = (int)(low + ((high-low)*scale)); } } if (minfree_abs >= 0) { Loading Loading
services/core/java/com/android/server/am/ProcessList.java 100644 → 100755 +35 −4 Original line number Diff line number Diff line Loading @@ -167,6 +167,17 @@ final class ProcessList { FOREGROUND_APP_ADJ, VISIBLE_APP_ADJ, PERCEPTIBLE_APP_ADJ, BACKUP_APP_ADJ, CACHED_APP_MIN_ADJ, CACHED_APP_MAX_ADJ }; // These are the low-end OOM level limits for 32bit private final int[] mOomMinFreeLow32Bit = new int[] { 8192, 12288, 16384, 24576, 28672, 32768 }; // These are the high-end OOM level limits for 32bit private final int[] mOomMinFreeHigh32Bit = new int[] { 49152, 61440, 73728, 86016, 98304, 122880 }; // These are the low-end OOM level limits. This is appropriate for an // HVGA or smaller phone with less than 512MB. Values are in KB. private final int[] mOomMinFreeLow = new int[] { Loading Loading @@ -235,16 +246,36 @@ final class ProcessList { Slog.i("XXXXXX", "minfree_adj=" + minfree_adj + " minfree_abs=" + minfree_abs); } if (Build.SUPPORTED_64_BIT_ABIS.length > 0) { final boolean is64bit = Build.SUPPORTED_64_BIT_ABIS.length > 0; if (is64bit) { // Increase the high min-free levels for cached processes for 64-bit mOomMinFreeHigh[4] = 225000; mOomMinFreeHigh[5] = 325000; } for (int i=0; i<mOomAdj.length; i++) { int low = mOomMinFreeLow[i]; int high = mOomMinFreeHigh[i]; int low = 0; int high = 0; if (is64bit) { // On 64 bit devices, we consume more baseline RAM, because 64 bit is cool! // To avoid being all pagey and stuff, scale up the memory levels to // give us some breathing room. Slog.i("XXXXXX", "choosing minFree values for 64 Bit"); low = mOomMinFreeLow[i]; high = mOomMinFreeHigh[i]; mOomMinFree[i] = (int)(low + ((high-low)*scale)); // More scaling up not required yet // mOomMinFree[i] = (3*mOomMinFree[i])/2; } else { Slog.i("XXXXXX", "choosing minFree values for 32 Bit"); low = mOomMinFreeLow32Bit[i]; high = mOomMinFreeHigh32Bit[i]; mOomMinFree[i] = (int)(low + ((high-low)*scale)); } } if (minfree_abs >= 0) { Loading