Loading services/core/java/com/android/server/am/ActivityManagerService.java +12 −12 Original line number Diff line number Diff line Loading @@ -1962,7 +1962,7 @@ public class ActivityManagerService extends IActivityManager.Stub nativeTotalPss += Debug.getPss(stats.get(j).pid, null, null); } memInfo.readMemInfo(); synchronized (ActivityManagerService.this) { synchronized (mProcessStats.mLock) { if (DEBUG_PSS) Slog.d(TAG_PSS, "Collected native and kernel memory in " + (SystemClock.uptimeMillis()-start) + "ms"); final long cachedKb = memInfo.getCachedSizeKb(); Loading Loading @@ -7054,9 +7054,7 @@ public class ActivityManagerService extends IActivityManager.Stub mUsageStatsService.prepareShutdown(); } mBatteryStatsService.shutdown(); synchronized (this) { mProcessStats.shutdownLocked(); } mProcessStats.shutdown(); return timedout; } Loading Loading @@ -12358,7 +12356,7 @@ public class ActivityManagerService extends IActivityManager.Stub MemInfoReader memInfo = new MemInfoReader(); memInfo.readMemInfo(); if (nativeProcTotalPss > 0) { synchronized (this) { synchronized (mProcessStats.mLock) { final long cachedKb = memInfo.getCachedSizeKb(); final long freeKb = memInfo.getFreeSizeKb(); final long zramKb = memInfo.getZramTotalSizeKb(); Loading Loading @@ -12940,7 +12938,7 @@ public class ActivityManagerService extends IActivityManager.Stub MemInfoReader memInfo = new MemInfoReader(); memInfo.readMemInfo(); if (nativeProcTotalPss > 0) { synchronized (this) { synchronized (mProcessStats.mLock) { final long cachedKb = memInfo.getCachedSizeKb(); final long freeKb = memInfo.getFreeSizeKb(); final long zramKb = memInfo.getZramTotalSizeKb(); Loading Loading @@ -16511,9 +16509,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override public void run() { synchronized (mService) { mProcessStats.writeStateAsyncLocked(); } mProcessStats.writeStateAsync(); } } Loading Loading @@ -16563,9 +16559,13 @@ public class ActivityManagerService extends IActivityManager.Stub } mLastMemoryLevel = memFactor; mLastNumProcesses = mProcessList.getLruSizeLocked(); boolean allChanged = mProcessStats.setMemFactorLocked( boolean allChanged; int trackerMemFactor; synchronized (mProcessStats.mLock) { allChanged = mProcessStats.setMemFactorLocked( memFactor, mAtmInternal != null ? !mAtmInternal.isSleeping() : true, now); final int trackerMemFactor = mProcessStats.getMemFactorLocked(); trackerMemFactor = mProcessStats.getMemFactorLocked(); } if (memFactor != ProcessStats.ADJ_MEM_FACTOR_NORMAL) { if (mLowRamStartTime == 0) { mLowRamStartTime = now; services/core/java/com/android/server/am/OomAdjuster.java +8 −6 Original line number Diff line number Diff line Loading @@ -659,6 +659,7 @@ public final class OomAdjuster { updateUidsLocked(activeUids, nowElapsed); synchronized (mService.mProcessStats.mLock) { if (mService.mProcessStats.shouldWriteNowLocked(now)) { mService.mHandler.post(new ActivityManagerService.ProcStatsRunnable(mService, mService.mProcessStats)); Loading @@ -666,6 +667,7 @@ public final class OomAdjuster { // Run this after making sure all procstates are updated. mService.mProcessStats.updateTrackingAssociationsLocked(mAdjSeq, now); } if (DEBUG_OOM_ADJ) { final long duration = SystemClock.uptimeMillis() - now; Loading services/core/java/com/android/server/am/ProcessRecord.java +84 −74 Original line number Diff line number Diff line Loading @@ -673,10 +673,12 @@ class ProcessRecord implements WindowProcessListener { public void makeActive(IApplicationThread _thread, ProcessStatsService tracker) { if (thread == null) { synchronized (tracker.mLock) { final ProcessState origBase = baseProcessTracker; if (origBase != null) { origBase.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) { FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED, uid, processName, pkgList.keyAt(ipkg), Loading @@ -688,7 +690,7 @@ class ProcessRecord implements WindowProcessListener { baseProcessTracker = tracker.getProcessStateLocked(info.packageName, info.uid, info.longVersionCode, processName); baseProcessTracker.makeActive(); for (int i=0; i<pkgList.size(); i++) { for (int i = 0, ipkg = pkgList.size(); i < ipkg; i++) { ProcessStats.ProcessStateHolder holder = pkgList.valueAt(i); if (holder.state != null && holder.state != origBase) { holder.state.makeInactive(); Loading @@ -700,6 +702,7 @@ class ProcessRecord implements WindowProcessListener { } } } } thread = _thread; mWindowProcessController.setThread(thread); } Loading @@ -707,11 +710,13 @@ class ProcessRecord implements WindowProcessListener { public void makeInactive(ProcessStatsService tracker) { thread = null; mWindowProcessController.setThread(null); synchronized (tracker.mLock) { final ProcessState origBase = baseProcessTracker; if (origBase != null) { if (origBase != null) { origBase.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) { FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED, uid, processName, pkgList.keyAt(ipkg), Loading @@ -721,7 +726,7 @@ class ProcessRecord implements WindowProcessListener { origBase.makeInactive(); } baseProcessTracker = null; for (int i=0; i<pkgList.size(); i++) { for (int i = 0, ipkg = pkgList.size(); i < ipkg; i++) { ProcessStats.ProcessStateHolder holder = pkgList.valueAt(i); if (holder.state != null && holder.state != origBase) { holder.state.makeInactive(); Loading @@ -731,6 +736,7 @@ class ProcessRecord implements WindowProcessListener { } } } } /** * Records a service as running in the process. Note that this method does not actually start Loading Loading @@ -1026,6 +1032,7 @@ class ProcessRecord implements WindowProcessListener { */ public boolean addPackage(String pkg, long versionCode, ProcessStatsService tracker) { if (!pkgList.containsKey(pkg)) { synchronized (tracker.mLock) { ProcessStats.ProcessStateHolder holder = new ProcessStats.ProcessStateHolder( versionCode); if (baseProcessTracker != null) { Loading @@ -1038,6 +1045,7 @@ class ProcessRecord implements WindowProcessListener { } else { pkgList.put(pkg, holder); } } return true; } return false; Loading Loading @@ -1072,6 +1080,7 @@ class ProcessRecord implements WindowProcessListener { public void resetPackageList(ProcessStatsService tracker) { final int N = pkgList.size(); if (baseProcessTracker != null) { synchronized (tracker.mLock) { long now = SystemClock.uptimeMillis(); baseProcessTracker.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), now, pkgList.mPkgList); Loading Loading @@ -1099,6 +1108,7 @@ class ProcessRecord implements WindowProcessListener { holder.state.makeActive(); } } } } else if (N != 1) { pkgList.clear(); pkgList.put(info.packageName, new ProcessStats.ProcessStateHolder(info.longVersionCode)); Loading services/core/java/com/android/server/am/ProcessStatsService.java +184 −103 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/am/ServiceRecord.java +5 −3 Original line number Diff line number Diff line Loading @@ -528,8 +528,9 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN return tracker; } if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { tracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, tracker = ams.mProcessStats.getServiceState(serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); tracker.applyNewOwner(this); } Loading @@ -546,7 +547,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN public void makeRestarting(int memFactor, long now) { if (restartTracker == null) { if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { restartTracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, restartTracker = ams.mProcessStats.getServiceState( serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); Loading Loading
services/core/java/com/android/server/am/ActivityManagerService.java +12 −12 Original line number Diff line number Diff line Loading @@ -1962,7 +1962,7 @@ public class ActivityManagerService extends IActivityManager.Stub nativeTotalPss += Debug.getPss(stats.get(j).pid, null, null); } memInfo.readMemInfo(); synchronized (ActivityManagerService.this) { synchronized (mProcessStats.mLock) { if (DEBUG_PSS) Slog.d(TAG_PSS, "Collected native and kernel memory in " + (SystemClock.uptimeMillis()-start) + "ms"); final long cachedKb = memInfo.getCachedSizeKb(); Loading Loading @@ -7054,9 +7054,7 @@ public class ActivityManagerService extends IActivityManager.Stub mUsageStatsService.prepareShutdown(); } mBatteryStatsService.shutdown(); synchronized (this) { mProcessStats.shutdownLocked(); } mProcessStats.shutdown(); return timedout; } Loading Loading @@ -12358,7 +12356,7 @@ public class ActivityManagerService extends IActivityManager.Stub MemInfoReader memInfo = new MemInfoReader(); memInfo.readMemInfo(); if (nativeProcTotalPss > 0) { synchronized (this) { synchronized (mProcessStats.mLock) { final long cachedKb = memInfo.getCachedSizeKb(); final long freeKb = memInfo.getFreeSizeKb(); final long zramKb = memInfo.getZramTotalSizeKb(); Loading Loading @@ -12940,7 +12938,7 @@ public class ActivityManagerService extends IActivityManager.Stub MemInfoReader memInfo = new MemInfoReader(); memInfo.readMemInfo(); if (nativeProcTotalPss > 0) { synchronized (this) { synchronized (mProcessStats.mLock) { final long cachedKb = memInfo.getCachedSizeKb(); final long freeKb = memInfo.getFreeSizeKb(); final long zramKb = memInfo.getZramTotalSizeKb(); Loading Loading @@ -16511,9 +16509,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override public void run() { synchronized (mService) { mProcessStats.writeStateAsyncLocked(); } mProcessStats.writeStateAsync(); } } Loading Loading @@ -16563,9 +16559,13 @@ public class ActivityManagerService extends IActivityManager.Stub } mLastMemoryLevel = memFactor; mLastNumProcesses = mProcessList.getLruSizeLocked(); boolean allChanged = mProcessStats.setMemFactorLocked( boolean allChanged; int trackerMemFactor; synchronized (mProcessStats.mLock) { allChanged = mProcessStats.setMemFactorLocked( memFactor, mAtmInternal != null ? !mAtmInternal.isSleeping() : true, now); final int trackerMemFactor = mProcessStats.getMemFactorLocked(); trackerMemFactor = mProcessStats.getMemFactorLocked(); } if (memFactor != ProcessStats.ADJ_MEM_FACTOR_NORMAL) { if (mLowRamStartTime == 0) { mLowRamStartTime = now;
services/core/java/com/android/server/am/OomAdjuster.java +8 −6 Original line number Diff line number Diff line Loading @@ -659,6 +659,7 @@ public final class OomAdjuster { updateUidsLocked(activeUids, nowElapsed); synchronized (mService.mProcessStats.mLock) { if (mService.mProcessStats.shouldWriteNowLocked(now)) { mService.mHandler.post(new ActivityManagerService.ProcStatsRunnable(mService, mService.mProcessStats)); Loading @@ -666,6 +667,7 @@ public final class OomAdjuster { // Run this after making sure all procstates are updated. mService.mProcessStats.updateTrackingAssociationsLocked(mAdjSeq, now); } if (DEBUG_OOM_ADJ) { final long duration = SystemClock.uptimeMillis() - now; Loading
services/core/java/com/android/server/am/ProcessRecord.java +84 −74 Original line number Diff line number Diff line Loading @@ -673,10 +673,12 @@ class ProcessRecord implements WindowProcessListener { public void makeActive(IApplicationThread _thread, ProcessStatsService tracker) { if (thread == null) { synchronized (tracker.mLock) { final ProcessState origBase = baseProcessTracker; if (origBase != null) { origBase.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) { FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED, uid, processName, pkgList.keyAt(ipkg), Loading @@ -688,7 +690,7 @@ class ProcessRecord implements WindowProcessListener { baseProcessTracker = tracker.getProcessStateLocked(info.packageName, info.uid, info.longVersionCode, processName); baseProcessTracker.makeActive(); for (int i=0; i<pkgList.size(); i++) { for (int i = 0, ipkg = pkgList.size(); i < ipkg; i++) { ProcessStats.ProcessStateHolder holder = pkgList.valueAt(i); if (holder.state != null && holder.state != origBase) { holder.state.makeInactive(); Loading @@ -700,6 +702,7 @@ class ProcessRecord implements WindowProcessListener { } } } } thread = _thread; mWindowProcessController.setThread(thread); } Loading @@ -707,11 +710,13 @@ class ProcessRecord implements WindowProcessListener { public void makeInactive(ProcessStatsService tracker) { thread = null; mWindowProcessController.setThread(null); synchronized (tracker.mLock) { final ProcessState origBase = baseProcessTracker; if (origBase != null) { if (origBase != null) { origBase.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList); for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) { FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED, uid, processName, pkgList.keyAt(ipkg), Loading @@ -721,7 +726,7 @@ class ProcessRecord implements WindowProcessListener { origBase.makeInactive(); } baseProcessTracker = null; for (int i=0; i<pkgList.size(); i++) { for (int i = 0, ipkg = pkgList.size(); i < ipkg; i++) { ProcessStats.ProcessStateHolder holder = pkgList.valueAt(i); if (holder.state != null && holder.state != origBase) { holder.state.makeInactive(); Loading @@ -731,6 +736,7 @@ class ProcessRecord implements WindowProcessListener { } } } } /** * Records a service as running in the process. Note that this method does not actually start Loading Loading @@ -1026,6 +1032,7 @@ class ProcessRecord implements WindowProcessListener { */ public boolean addPackage(String pkg, long versionCode, ProcessStatsService tracker) { if (!pkgList.containsKey(pkg)) { synchronized (tracker.mLock) { ProcessStats.ProcessStateHolder holder = new ProcessStats.ProcessStateHolder( versionCode); if (baseProcessTracker != null) { Loading @@ -1038,6 +1045,7 @@ class ProcessRecord implements WindowProcessListener { } else { pkgList.put(pkg, holder); } } return true; } return false; Loading Loading @@ -1072,6 +1080,7 @@ class ProcessRecord implements WindowProcessListener { public void resetPackageList(ProcessStatsService tracker) { final int N = pkgList.size(); if (baseProcessTracker != null) { synchronized (tracker.mLock) { long now = SystemClock.uptimeMillis(); baseProcessTracker.setState(ProcessStats.STATE_NOTHING, tracker.getMemFactorLocked(), now, pkgList.mPkgList); Loading Loading @@ -1099,6 +1108,7 @@ class ProcessRecord implements WindowProcessListener { holder.state.makeActive(); } } } } else if (N != 1) { pkgList.clear(); pkgList.put(info.packageName, new ProcessStats.ProcessStateHolder(info.longVersionCode)); Loading
services/core/java/com/android/server/am/ProcessStatsService.java +184 −103 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/am/ServiceRecord.java +5 −3 Original line number Diff line number Diff line Loading @@ -528,8 +528,9 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN return tracker; } if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { tracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, tracker = ams.mProcessStats.getServiceState(serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); tracker.applyNewOwner(this); } Loading @@ -546,7 +547,8 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN public void makeRestarting(int memFactor, long now) { if (restartTracker == null) { if ((serviceInfo.applicationInfo.flags&ApplicationInfo.FLAG_PERSISTENT) == 0) { restartTracker = ams.mProcessStats.getServiceStateLocked(serviceInfo.packageName, restartTracker = ams.mProcessStats.getServiceState( serviceInfo.packageName, serviceInfo.applicationInfo.uid, serviceInfo.applicationInfo.longVersionCode, serviceInfo.processName, serviceInfo.name); Loading