From eec2f41d607c3eacba4f7d9cc098b335c7310d23 Mon Sep 17 00:00:00 2001 From: Bob Lee Date: Thu, 10 Sep 2009 11:01:24 +0200 Subject: [PATCH] Addressed reviewer comments. --- core/java/android/app/ActivityThread.java | 9 +++---- .../os/SamplingProfilerIntegration.java | 26 ++++++++++++------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 2877aec13a827..8142d1a3e34a1 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4246,12 +4246,9 @@ public final class ActivityThread { } thread.detach(); - String name; - if (thread.mInitialApplication != null) { - name = thread.mInitialApplication.getPackageName(); - } else { - name = ""; - } + String name = (thread.mInitialApplication != null) + ? thread.mInitialApplication.getPackageName() + : ""; Log.i(TAG, "Main thread of " + name + " is now exiting"); } } diff --git a/core/java/com/android/internal/os/SamplingProfilerIntegration.java b/core/java/com/android/internal/os/SamplingProfilerIntegration.java index 44bcd16a8465d..51d957084d1ee 100644 --- a/core/java/com/android/internal/os/SamplingProfilerIntegration.java +++ b/core/java/com/android/internal/os/SamplingProfilerIntegration.java @@ -11,7 +11,6 @@ import java.util.concurrent.Executors; import android.util.Log; import android.os.*; -import android.net.Uri; /** * Integrates the framework with Dalvik's sampling profiler. @@ -60,14 +59,25 @@ public class SamplingProfilerIntegration { public static void writeSnapshot(final String name) { if (!enabled) return; + /* + * If we're already writing a snapshot, don't bother enqueing another + * request right now. This will reduce the number of individual + * snapshots and in turn the total amount of memory consumed (one big + * snapshot is smaller than N subset snapshots). + */ if (!pending) { pending = true; snapshotWriter.execute(new Runnable() { public void run() { String dir = "/sdcard/snapshots"; if (!dirMade) { - makeDirectory(dir); - dirMade = true; + new File(dir).mkdirs(); + if (new File(dir).isDirectory()) { + dirMade = true; + } else { + Log.w(TAG, "Creation of " + dir + " failed."); + return; + } } try { writeSnapshot(dir, name); @@ -86,7 +96,7 @@ public class SamplingProfilerIntegration { if (!enabled) return; String dir = "/data/zygote/snapshots"; - makeDirectory(dir); + new File(dir).mkdirs(); writeSnapshot(dir, "zygote"); } @@ -102,7 +112,7 @@ public class SamplingProfilerIntegration { * we capture two snapshots in rapid succession. */ long start = System.currentTimeMillis(); - String path = dir + "/" + name.replace(':', '.') + "-" + String path = dir + "/" + name.replace(':', '.') + "-" + + System.currentTimeMillis() + ".snapshot"; try { // Try to open the file a few times. The SD card may not be mounted. @@ -117,7 +127,7 @@ public class SamplingProfilerIntegration { Log.e(TAG, "Could not open " + path + "."); return; } - + // Sleep for a bit and then try again. try { Thread.sleep(2500); @@ -137,8 +147,4 @@ public class SamplingProfilerIntegration { Log.e(TAG, "Error writing snapshot.", e); } } - - private static void makeDirectory(String dir) { - new File(dir).mkdirs(); - } }