Merge "More procstats work: separate global proc account, more dumping."
This commit is contained in:
committed by
Android (Google) Code Review
commit
f35f56a1bd
@@ -550,6 +550,43 @@ public final class ArrayMap<K, V> implements Map<K, V> {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>This implementation composes a string by iterating over its mappings. If
|
||||
* this map contains itself as a key or a value, the string "(this Map)"
|
||||
* will appear in its place.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
if (isEmpty()) {
|
||||
return "{}";
|
||||
}
|
||||
|
||||
StringBuilder buffer = new StringBuilder(mSize * 28);
|
||||
buffer.append('{');
|
||||
for (int i=0; i<mSize; i++) {
|
||||
if (i > 0) {
|
||||
buffer.append(", ");
|
||||
}
|
||||
Object key = keyAt(i);
|
||||
if (key != this) {
|
||||
buffer.append(key);
|
||||
} else {
|
||||
buffer.append("(this Map)");
|
||||
}
|
||||
buffer.append('=');
|
||||
Object value = valueAt(i);
|
||||
if (value != this) {
|
||||
buffer.append(value);
|
||||
} else {
|
||||
buffer.append("(this Map)");
|
||||
}
|
||||
}
|
||||
buffer.append('}');
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Interop with traditional Java containers. Not as efficient as using
|
||||
// specialized collection APIs.
|
||||
|
||||
@@ -493,6 +493,36 @@ public final class ArraySet<E> implements Collection<E>, Set<E> {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* <p>This implementation composes a string by iterating over its values. If
|
||||
* this set contains itself as a value, the string "(this Set)"
|
||||
* will appear in its place.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
if (isEmpty()) {
|
||||
return "{}";
|
||||
}
|
||||
|
||||
StringBuilder buffer = new StringBuilder(mSize * 14);
|
||||
buffer.append('{');
|
||||
for (int i=0; i<mSize; i++) {
|
||||
if (i > 0) {
|
||||
buffer.append(", ");
|
||||
}
|
||||
Object value = valueAt(i);
|
||||
if (value != this) {
|
||||
buffer.append(value);
|
||||
} else {
|
||||
buffer.append("(this Set)");
|
||||
}
|
||||
}
|
||||
buffer.append('}');
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Interop with traditional Java containers. Not as efficient as using
|
||||
// specialized collection APIs.
|
||||
|
||||
@@ -406,7 +406,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
* Tracking long-term execution of processes to look for abuse and other
|
||||
* bad app behavior.
|
||||
*/
|
||||
final ProcessTracker mProcessTracker = new ProcessTracker();
|
||||
ProcessTracker mProcessTracker;
|
||||
|
||||
/**
|
||||
* The currently running isolated processes.
|
||||
@@ -1547,6 +1547,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
m.mContext = context;
|
||||
m.mFactoryTest = factoryTest;
|
||||
m.mIntentFirewall = new IntentFirewall(m.new IntentFirewallInterface());
|
||||
m.mProcessTracker = new ProcessTracker(context);
|
||||
|
||||
m.mStackSupervisor = new ActivityStackSupervisor(m, context, thr.mLooper);
|
||||
|
||||
@@ -10173,12 +10174,12 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
}
|
||||
|
||||
String[] newArgs = new String[args.length - opti];
|
||||
if (args.length > 2) System.arraycopy(args, opti, newArgs, 0, args.length - opti);
|
||||
System.arraycopy(args, opti, newArgs, 0, args.length - opti);
|
||||
|
||||
TaskRecord lastTask = null;
|
||||
boolean needSep = false;
|
||||
for (int i=activities.size()-1; i>=0; i--) {
|
||||
ActivityRecord r = (ActivityRecord)activities.get(i);
|
||||
ActivityRecord r = activities.get(i);
|
||||
if (needSep) {
|
||||
pw.println();
|
||||
}
|
||||
|
||||
@@ -244,7 +244,8 @@ final class ProcessList {
|
||||
}
|
||||
|
||||
int adjToTrackedState(int adj) {
|
||||
return adj >= FOREGROUND_APP_ADJ ? mAdjToTrackedState[adj] : ProcessTracker.STATE_NOTHING;
|
||||
return adj >= FOREGROUND_APP_ADJ
|
||||
? mAdjToTrackedState[adj] : ProcessTracker.STATE_PERSISTENT;
|
||||
}
|
||||
|
||||
private void writeFile(String path, String data) {
|
||||
|
||||
@@ -451,8 +451,8 @@ final class ProcessRecord {
|
||||
ProcessList plist) {
|
||||
int state = this == TOP_APP ? ProcessTracker.STATE_TOP
|
||||
: plist.adjToTrackedState(setAdj);
|
||||
for (int ip=pkgList.size()-1; ip>=0; ip--) {
|
||||
pkgList.valueAt(ip).setState(state, memFactor, now);
|
||||
if (pkgList.size() > 0) {
|
||||
pkgList.valueAt(0).setState(state, memFactor, now, pkgList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -461,8 +461,8 @@ final class ProcessRecord {
|
||||
*/
|
||||
public void resetPackageList() {
|
||||
long now = SystemClock.uptimeMillis();
|
||||
for (int i=0; i<pkgList.size(); i++) {
|
||||
pkgList.valueAt(i).setState(ProcessTracker.STATE_NOTHING, 0, now);
|
||||
if (pkgList.size() > 0) {
|
||||
pkgList.valueAt(0).setState(ProcessTracker.STATE_NOTHING, 0, now, pkgList);
|
||||
}
|
||||
pkgList.clear();
|
||||
pkgList.put(info.packageName, baseProcessTracker);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user