Added tool to generate application-specific reports from class load profiling data. Generated new profiling data. Deleted old data. Generated new preloaded-classes file.
diff --git a/tools/preload/LoadedClass.java b/tools/preload/LoadedClass.java
index 86e5dfc..02cff10 100644
--- a/tools/preload/LoadedClass.java
+++ b/tools/preload/LoadedClass.java
@@ -15,7 +15,11 @@
*/
import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
/**
* A loaded class.
@@ -50,6 +54,30 @@
this.systemClass = systemClass;
}
+ /**
+ * Returns true if this class was loaded by more than one proc.
+ */
+ boolean isSharable() {
+ Set<String> procNames = new HashSet<String>();
+ for (Operation load : loads) {
+ if (load.process.fromZygote()) {
+ procNames.add(load.process.name);
+ if (procNames.size() > 1) {
+ return true;
+ }
+ }
+ }
+ for (Operation init : initializations) {
+ if (init.process.fromZygote()) {
+ procNames.add(init.process.name);
+ if (procNames.size() > 1) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
void measureMemoryUsage() {
this.memoryUsage = MemoryUsage.forClass(name);
}