preload函数里面分别调用了三个预加载函数,我们分别来分析一下这几个函数的实现。
首先是preloadClasses,函数实现如下:
- private static final int UNPRIVILEGED_UID = 9999; private static final int UNPRIVILEGED_GID = 9999;
- private static final int ROOT_UID = 0;
- private static final int ROOT_GID = 0;
- private static void preloadClasses() {
- final VMRuntime runtime = VMRuntime.getRuntime();
- InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(PRELOADED_CLASSES); if (is == null) {
- Log.e(TAG, "Couldn't find " + PRELOADED_CLASSES + "."); } else {
- Log.i(TAG, "Preloading classes..."); long startTime = SystemClock.uptimeMillis();
- setEffectiveGroup(UNPRIVILEGED_GID);
- setEffectiveGroup(UNPRIVILEGED_UID);
- float defaultUtilization = runtime.getTargetHeapUtilization(); runtime.setTargetHeapUtilization(0.8f);
- System.gc();
- runtime.runFinalizationSync(); Debug.startAllocCounting();
- try {
- // 创建一个缓冲区为256字符的输入流 BufferedReader br = new BufferdReader(new InputStreamReader(is), 256);
- int count = 0; String line;










