diff --git a/core/jni/Android.bp b/core/jni/Android.bp index c385ca11611cc..f9813fdb65abe 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -290,6 +290,7 @@ cc_library_shared { "libhwui", "libdl", "libstatslog", + "server_configurable_flags", ], generated_sources: ["android_util_StatsLog.cpp"], diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 565fa6f631205..55fb27e8d57c7 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -769,7 +770,17 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) addOption("-XX:LowMemoryMode"); } - parseRuntimeOption("dalvik.vm.gctype", gctypeOptsBuf, "-Xgc:"); + std::string gc_type_override = + server_configurable_flags::GetServerConfigurableFlag("runtime_native", "gctype", ""); + std::string gc_type_override_temp; + if (gc_type_override.empty()) { + parseRuntimeOption("dalvik.vm.gctype", gctypeOptsBuf, "-Xgc:"); + } else { + // Copy the string so it doesn't go out of scope since addOption does not make a copy. + gc_type_override_temp = "-Xgc:" + gc_type_override; + addOption(gc_type_override_temp.c_str()); + } + parseRuntimeOption("dalvik.vm.backgroundgctype", backgroundgcOptsBuf, "-XX:BackgroundGC="); /*