diff options
| author | 2016-05-17 11:02:18 +0000 | |
|---|---|---|
| committer | 2016-05-17 11:02:20 +0000 | |
| commit | 5a68af384037f2980215dd45b91c5165c779d4e8 (patch) | |
| tree | de4f0601f86db362d647e3fa1c824a0c6731e037 | |
| parent | bc73347152a3562a7f957a07433d64912f4acd83 (diff) | |
| parent | 6cb7b1c4765e9bc5175056826523dbd88426e9aa (diff) | |
Merge "ZygoteInit: warm up JCA providers during preload" into nyc-dev
| -rw-r--r-- | core/java/com/android/internal/os/ZygoteInit.java | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 55541825de62..a3e41e47b267 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -56,6 +56,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.security.Security; +import java.security.Provider; import java.util.ArrayList; /** @@ -198,6 +200,7 @@ public class ZygoteInit { // Ask the WebViewFactory to do any initialization that must run in the zygote process, // for memory sharing purposes. WebViewFactory.prepareWebViewInZygote(); + warmUpJcaProviders(); Log.d(TAG, "end preload"); } @@ -220,6 +223,24 @@ public class ZygoteInit { } /** + * Warm up the providers that are already registered. + * + * By doing it here we avoid that each app does it when requesting a service from the + * provider for the first time. + */ + private static void warmUpJcaProviders() { + long startTime = SystemClock.uptimeMillis(); + Trace.traceBegin( + Trace.TRACE_TAG_DALVIK, "Starting warm up of JCA providers"); + for (Provider p : Security.getProviders()) { + p.warmUpServiceProvision(); + } + Log.i(TAG, "Warmed up JCA providers in " + + (SystemClock.uptimeMillis()-startTime) + "ms."); + Trace.traceEnd(Trace.TRACE_TAG_DALVIK); + } + + /** * Performs Zygote process initialization. Loads and initializes * commonly used classes. * |