Merge "Optionally trigger CG in onTrimMemory()" into qt-dev
This commit is contained in:
@@ -2080,7 +2080,7 @@ public final class ActivityThread extends ClientTransactionHandler {
|
|||||||
@Override
|
@Override
|
||||||
public final boolean queueIdle() {
|
public final boolean queueIdle() {
|
||||||
doGcIfNeeded();
|
doGcIfNeeded();
|
||||||
nPurgePendingResources();
|
purgePendingResources();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2088,9 +2088,7 @@ public final class ActivityThread extends ClientTransactionHandler {
|
|||||||
final class PurgeIdler implements MessageQueue.IdleHandler {
|
final class PurgeIdler implements MessageQueue.IdleHandler {
|
||||||
@Override
|
@Override
|
||||||
public boolean queueIdle() {
|
public boolean queueIdle() {
|
||||||
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "purgePendingResources");
|
purgePendingResources();
|
||||||
nPurgePendingResources();
|
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2460,13 +2458,17 @@ public final class ActivityThread extends ClientTransactionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void doGcIfNeeded() {
|
void doGcIfNeeded() {
|
||||||
|
doGcIfNeeded("bg");
|
||||||
|
}
|
||||||
|
|
||||||
|
void doGcIfNeeded(String reason) {
|
||||||
mGcIdlerScheduled = false;
|
mGcIdlerScheduled = false;
|
||||||
final long now = SystemClock.uptimeMillis();
|
final long now = SystemClock.uptimeMillis();
|
||||||
//Slog.i(TAG, "**** WE MIGHT WANT TO GC: then=" + Binder.getLastGcTime()
|
//Slog.i(TAG, "**** WE MIGHT WANT TO GC: then=" + Binder.getLastGcTime()
|
||||||
// + "m now=" + now);
|
// + "m now=" + now);
|
||||||
if ((BinderInternal.getLastGcTime()+MIN_TIME_BETWEEN_GCS) < now) {
|
if ((BinderInternal.getLastGcTime()+MIN_TIME_BETWEEN_GCS) < now) {
|
||||||
//Slog.i(TAG, "**** WE DO, WE DO WANT TO GC!");
|
//Slog.i(TAG, "**** WE DO, WE DO WANT TO GC!");
|
||||||
BinderInternal.forceGc("bg");
|
BinderInternal.forceGc(reason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6006,6 +6008,16 @@ public final class ActivityThread extends ClientTransactionHandler {
|
|||||||
|
|
||||||
WindowManagerGlobal.getInstance().trimMemory(level);
|
WindowManagerGlobal.getInstance().trimMemory(level);
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||||
|
|
||||||
|
if (SystemProperties.getInt("debug.am.run_gc_trim_level", Integer.MAX_VALUE) <= level) {
|
||||||
|
unscheduleGcIdler();
|
||||||
|
doGcIfNeeded("tm");
|
||||||
|
}
|
||||||
|
if (SystemProperties.getInt("debug.am.run_mallopt_trim_level", Integer.MAX_VALUE)
|
||||||
|
<= level) {
|
||||||
|
unschedulePurgeIdler();
|
||||||
|
purgePendingResources();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupGraphicsSupport(Context context) {
|
private void setupGraphicsSupport(Context context) {
|
||||||
@@ -7346,6 +7358,12 @@ public final class ActivityThread extends ClientTransactionHandler {
|
|||||||
throw new RuntimeException("Main thread loop unexpectedly exited");
|
throw new RuntimeException("Main thread loop unexpectedly exited");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void purgePendingResources() {
|
||||||
|
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "purgePendingResources");
|
||||||
|
nPurgePendingResources();
|
||||||
|
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------ Regular JNI ------------------------
|
// ------------------ Regular JNI ------------------------
|
||||||
private native void nPurgePendingResources();
|
private native void nPurgePendingResources();
|
||||||
private native void nDumpGraphicsInfo(FileDescriptor fd);
|
private native void nDumpGraphicsInfo(FileDescriptor fd);
|
||||||
|
|||||||
Reference in New Issue
Block a user