summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/config.xml3
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerConstants.java19
3 files changed, 18 insertions, 6 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 2770cbef6dfc..029ed5b23d84 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -5041,4 +5041,7 @@
<!-- The default number of times per second that the seconds hand on AnalogClock ticks. If set
to 0, the seconds hand will be disabled. -->
<integer name="config_defaultAnalogClockSecondsHandFps">1</integer>
+
+ <!-- the number of the max cached processes in the system. -->
+ <integer name="config_customizedMaxCachedProcesses">32</integer>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index bfd39a3c4234..40555fdaaa45 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -4423,4 +4423,6 @@
<java-symbol type="dimen" name="config_wallpaperDimAmount" />
<java-symbol type="bool" name="config_volumeShowRemoteSessions" />
+
+ <java-symbol type="integer" name="config_customizedMaxCachedProcesses" />
</resources>
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index ccdc3f8c8e3f..ac0a1985ac89 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -506,6 +506,7 @@ final class ActivityManagerConstants extends ContentObserver {
private final KeyValueListParser mParser = new KeyValueListParser(',');
private int mOverrideMaxCachedProcesses = -1;
+ private final int mCustomizedMaxCachedProcesses;
// The maximum number of cached processes we will keep around before killing them.
// NOTE: this constant is *only* a control to not let us go too crazy with
@@ -515,11 +516,12 @@ final class ActivityManagerConstants extends ContentObserver {
// kill them. Also note that this limit only applies to cached background processes;
// we have no limit on the number of service, visible, foreground, or other such
// processes and the number of those processes does not count against the cached
- // process limit.
- public int CUR_MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES;
+ // process limit. This will be initialized in the constructor.
+ public int CUR_MAX_CACHED_PROCESSES;
- // The maximum number of empty app processes we will let sit around.
- public int CUR_MAX_EMPTY_PROCESSES = computeEmptyProcessLimit(CUR_MAX_CACHED_PROCESSES);
+ // The maximum number of empty app processes we will let sit around. This will be
+ // initialized in the constructor.
+ public int CUR_MAX_EMPTY_PROCESSES;
// The number of empty apps at which we don't consider it necessary to do
// memory trimming.
@@ -762,6 +764,10 @@ final class ActivityManagerConstants extends ContentObserver {
context.getResources().getStringArray(
com.android.internal.R.array.config_keep_warming_services))
.map(ComponentName::unflattenFromString).collect(Collectors.toSet()));
+ mCustomizedMaxCachedProcesses = context.getResources().getInteger(
+ com.android.internal.R.integer.config_customizedMaxCachedProcesses);
+ CUR_MAX_CACHED_PROCESSES = mCustomizedMaxCachedProcesses;
+ CUR_MAX_EMPTY_PROCESSES = computeEmptyProcessLimit(CUR_MAX_CACHED_PROCESSES);
}
public void start(ContentResolver resolver) {
@@ -1105,13 +1111,13 @@ final class ActivityManagerConstants extends ContentObserver {
try {
CUR_MAX_CACHED_PROCESSES = mOverrideMaxCachedProcesses < 0
? (TextUtils.isEmpty(maxCachedProcessesFlag)
- ? DEFAULT_MAX_CACHED_PROCESSES : Integer.parseInt(maxCachedProcessesFlag))
+ ? mCustomizedMaxCachedProcesses : Integer.parseInt(maxCachedProcessesFlag))
: mOverrideMaxCachedProcesses;
} catch (NumberFormatException e) {
// Bad flag value from Phenotype, revert to default.
Slog.e(TAG,
"Unable to parse flag for max_cached_processes: " + maxCachedProcessesFlag, e);
- CUR_MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES;
+ CUR_MAX_CACHED_PROCESSES = mCustomizedMaxCachedProcesses;
}
CUR_MAX_EMPTY_PROCESSES = computeEmptyProcessLimit(CUR_MAX_CACHED_PROCESSES);
@@ -1288,6 +1294,7 @@ final class ActivityManagerConstants extends ContentObserver {
if (mOverrideMaxCachedProcesses >= 0) {
pw.print(" mOverrideMaxCachedProcesses="); pw.println(mOverrideMaxCachedProcesses);
}
+ pw.print(" mCustomizedMaxCachedProcesses="); pw.println(mCustomizedMaxCachedProcesses);
pw.print(" CUR_MAX_CACHED_PROCESSES="); pw.println(CUR_MAX_CACHED_PROCESSES);
pw.print(" CUR_MAX_EMPTY_PROCESSES="); pw.println(CUR_MAX_EMPTY_PROCESSES);
pw.print(" CUR_TRIM_EMPTY_PROCESSES="); pw.println(CUR_TRIM_EMPTY_PROCESSES);