diff options
| author | Mathieu Chartier <mathieuc@google.com> | 2019-10-23 09:53:39 -0700 |
|---|---|---|
| committer | Mathieu Chartier <mathieuc@google.com> | 2019-10-24 08:04:31 -0700 |
| commit | d3c72db3bb210939ca9ff814577e00111baf4018 (patch) | |
| tree | 215208b5d0d2f544f18c4cfacd8707129a9f1b37 /core/java | |
| parent | 0ac7e561e92d9335a5174542abca8ca36f514d11 (diff) | |
Avoid preloading classes for boot image profiling
Since the clinits may execute methods, we should avoid preloading
classes to avoid executing methods that may not be required. These
samples could cause inaccuracy in the boot image profile.
Test: manual: adb logcat | grep preloadClasses
Bug: 139883463
Change-Id: I5b4568a477724606105196cba010109f80eecec1
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/os/ZygoteInit.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 72d24645a2e7..ad4c6dd7a92b 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -248,6 +248,18 @@ public class ZygoteInit { InputStream is; try { + // If we are profiling the boot image, avoid preloading classes. + // Can't use device_config since we are the zygote. + String prop = SystemProperties.get( + "persist.device_config.runtime_native_boot.profilebootclasspath", ""); + // Might be empty if the property is unset since the default is "". + if (prop.length() == 0) { + prop = SystemProperties.get("dalvik.vm.profilebootclasspath", ""); + } + if ("true".equals(prop)) { + return; + } + is = new FileInputStream(PRELOADED_CLASSES); } catch (FileNotFoundException e) { Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + "."); |
