summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2011-08-17 19:09:09 -0700
committer Dianne Hackborn <hackbod@google.com> 2011-08-17 19:09:23 -0700
commite8c88e6f764a77d94b0051ea169a82a61fcc0d0e (patch)
tree4f4a2b3843b539bb8a7691affb4fd43c584b3fc3
parent9f550e91f4d82313135a37a426d563f855a4f6a5 (diff)
Fix issue #5163456: logspam/tight loop in BatteryStatsImpl
No longer use the old history code. Change-Id: I878ffe16e0014453c46db6a4f7228a81468d8cb9
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java30
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java1
2 files changed, 23 insertions, 8 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 7b65964a2fc0..df5071f39c84 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -67,12 +67,13 @@ public final class BatteryStatsImpl extends BatteryStats {
private static final String TAG = "BatteryStatsImpl";
private static final boolean DEBUG = false;
private static final boolean DEBUG_HISTORY = false;
+ private static final boolean USE_OLD_HISTORY = false; // for debugging.
// In-memory Parcel magic number, used to detect attempts to unmarshall bad data
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 60;
+ private static final int VERSION = 61 + (USE_OLD_HISTORY ? 1000 : 0);
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 2000;
@@ -1285,6 +1286,10 @@ public final class BatteryStatsImpl extends BatteryStats {
void addHistoryRecordLocked(long curTime) {
addHistoryBufferLocked(curTime);
+ if (!USE_OLD_HISTORY) {
+ return;
+ }
+
if (!mHaveBatteryLevel || !mRecordingHistory) {
return;
}
@@ -1363,12 +1368,15 @@ public final class BatteryStatsImpl extends BatteryStats {
void clearHistoryLocked() {
if (DEBUG_HISTORY) Slog.i(TAG, "********** CLEARING HISTORY!");
- if (mHistory != null) {
- mHistoryEnd.next = mHistoryCache;
- mHistoryCache = mHistory;
- mHistory = mHistoryLastEnd = mHistoryEnd = null;
+ if (USE_OLD_HISTORY) {
+ if (mHistory != null) {
+ mHistoryEnd.next = mHistoryCache;
+ mHistoryCache = mHistory;
+ mHistory = mHistoryLastEnd = mHistoryEnd = null;
+ }
+ mNumHistoryItems = 0;
}
- mNumHistoryItems = 0;
+
mHistoryBaseTime = 0;
mLastHistoryTime = 0;
@@ -4863,7 +4871,9 @@ public final class BatteryStatsImpl extends BatteryStats {
}
long now = SystemClock.elapsedRealtime();
- addHistoryRecordLocked(now, HistoryItem.CMD_START);
+ if (USE_OLD_HISTORY) {
+ addHistoryRecordLocked(now, HistoryItem.CMD_START);
+ }
addHistoryBufferLocked(now, HistoryItem.CMD_START);
}
@@ -4923,6 +4933,9 @@ public final class BatteryStatsImpl extends BatteryStats {
}
void readOldHistory(Parcel in) {
+ if (!USE_OLD_HISTORY) {
+ return;
+ }
mHistory = mHistoryEnd = mHistoryCache = null;
long time;
while (in.dataAvail() > 0 && (time=in.readLong()) >= 0) {
@@ -4952,6 +4965,9 @@ public final class BatteryStatsImpl extends BatteryStats {
}
void writeOldHistory(Parcel out) {
+ if (!USE_OLD_HISTORY) {
+ return;
+ }
HistoryItem rec = mHistory;
while (rec != null) {
if (rec.time >= 0) rec.writeToParcel(out, 0);
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index e9c91e6fbf25..cba04dffe6d3 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -2699,7 +2699,6 @@ public final class ActivityManagerService extends ActivityManagerNative
}
if (!haveBg) {
- Slog.i(TAG, "Low Memory: No more background processes.");
EventLog.writeEvent(EventLogTags.AM_LOW_MEMORY, mLruProcesses.size());
long now = SystemClock.uptimeMillis();
for (int i=mLruProcesses.size()-1; i>=0; i--) {