Detect system-wide safe mode and configure the VM accordingly.
For the system server process, do the disableJitCompilation/startJitCompilation callbacks depending on whether the system is in safe mode or not. In addition, if the system is found to be in safe mode, a flag will be set in the Zygote class which will be used to launch subsequent apps in VM safe mode. Bug: 2267590
This commit is contained in:
@@ -22,6 +22,7 @@ import com.android.internal.os.BinderInternal;
|
||||
import com.android.internal.os.SamplingProfilerIntegration;
|
||||
|
||||
import dalvik.system.VMRuntime;
|
||||
import dalvik.system.Zygote;
|
||||
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
@@ -396,8 +397,15 @@ class ServerThread extends Thread {
|
||||
if (safeMode) {
|
||||
try {
|
||||
ActivityManagerNative.getDefault().enterSafeMode();
|
||||
// Post the safe mode state in the Zygote class
|
||||
Zygote.systemInSafeMode = true;
|
||||
// Disable the JIT for the system_server process
|
||||
VMRuntime.getRuntime().disableJitCompilation();
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
} else {
|
||||
// Enable the JIT for the system_server process
|
||||
VMRuntime.getRuntime().startJitCompilation();
|
||||
}
|
||||
|
||||
// It is now time to start up the app processes...
|
||||
@@ -519,7 +527,6 @@ public class SystemServer
|
||||
// The system server has to run all of the time, so it needs to be
|
||||
// as efficient as possible with its memory usage.
|
||||
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
|
||||
VMRuntime.getRuntime().startJitCompilation();
|
||||
|
||||
System.loadLibrary("android_servers");
|
||||
init1(args);
|
||||
|
||||
Reference in New Issue
Block a user