Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f35f56a1 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "More procstats work: separate global proc account, more dumping."

parents e539ee86 a17c0f5e
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -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.
+30 −0
Original line number Diff line number Diff line
@@ -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.
+4 −3
Original line number Diff line number Diff line
@@ -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();
            }
+2 −1
Original line number Diff line number Diff line
@@ -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) {
+4 −4
Original line number Diff line number Diff line
@@ -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);
Loading