adb shell dumpsys meminfopackage_nameまたはpid
例えば
adb shell dumpsys meminfo com.android.systemui
adb shell dumpsys meminfo com.android.settings
使用されているメモリの量を示す合計pss列を表示します
一般的に、メモリフットプリントには次のルールがあります。VSS> = RSS> = PSS> = USS
VSS-仮想セットサイズ仮想メモリ消費量(共有ライブラリによって占有されているメモリを含む)
RSS-常駐セットサイズ実際に使用されている物理メモリ(共有ライブラリによって占有されているメモリを含む)
PSS-比例セットサイズ実際に使用されている物理メモリ(共有ライブラリによって占有されている)メモリ)
USS-プロセスのみが占有する一意のセットサイズの物理メモリ(共有ライブラリが占有するメモリを除く)
adbシェルdumpsysmeminfo | grep package_name
adbシェルdumpsysmeminfo | grep com.android.settings
adbシェルdumpsysmeminfo | grep com.android.systemui
ps -A | grep -i cameraserver
ps -A | grep -i com.android.systemui
adb shell cat / proc / meminfo
MemFree:空きメモリの数。これは、システムの未使用のメモリを意味します。MemUsed = MemTotal-MemFreeは、使用されたメモリです。
MemAvailable:使用可能なメモリの数、アプリケーションで使用可能なメモリの数。システム内の一部のメモリが使用されていますが、再利用できます。たとえば、キャッシュ/バッファとスラブを再利用できるため、MemFreeは使用可能なすべてのメモリを表すことはできません。再利用可能なメモリとMemFreeのこの部分は、システムで使用可能なメモリです。つまり、MemAvailable≈MemFree+ Buffers + Cachedです。これは、特定のアルゴリズムを使用してカーネルによって計算され、推定値です。MemFreeとの主な違いは、MemFreeはシステムレベルを指し、MemAvailableはアプリケーションレベルを指すことです。
MemoryInfo memoryInfo = new MemoryInfo();
private ActivityManager mActivityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
//プライベートActivityManagermActivityManager = =(ActivityManager)getInstrumentation()。getTargetContext()。getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
mActivityManager.getMemoryInfo(memoryInfo);
long availMem = memoryInfo.availMem / 1024/1024;
long totalMem = memoryInfo.totalMem / 1024/1024;
長いしきい値= memoryInfo.threshold / 1024/1024;
Log.i(TAG、 "totalMem =" + totalMem + "availMem =" + availMem + "threshold =" + threshold);
private void getProcessMemroy() {
//ActivityManager am = (ActivityManager) getInstrumentation()
// .getContext().getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> apps = am.getRunningAppProcesses();
for (RunningAppProcessInfo proc : apps) {
Log.i(TAG, "process:"+proc.processName);
if (!proc.processName.contains("com.android.settings")) {
continue;
}
int[] pids = new int[1];
pids[0]=proc.pid;
MemoryInfo meminfo = am.getProcessMemoryInfo(pids)[0];
Log.i(TAG, "pid="+proc.pid+" totalPSS="+meminfo.getTotalPss()/1024+" nativePSS="+meminfo.nativePss/1024+" dalvikPSS="+meminfo.dalvikPss/1024);
}
インポートjava.lang.Process;
インポートjava.io.BufferedReader;
インポートjava.io.IOException;
インポートjava.io.InputStream;
インポートjava.io.InputStreamReader;
String cmd = "adb shell dumpsys meminfo com.android.settings";
int mem_result = 0;
{ プロセスp = Runtime.getRuntime()。exec(cmd);を試してください 。
InputStream input = p.getInputStream();
BufferedReaderリーダー= new BufferedReader(new InputStreamReader(input));
文字列line = "";
while((line = reader.readLine())!= null){ if(line.startsWith( "TOTAL")){ Log.i(TAG、line.trim()); ブレーク; } } reader.close(); input.close(); } catch(IOException e){ Log.e(TAG、 "dumpsys meminfo failed" + e); }
#!/ bin / bash
adb root
adb wait-for-device
adb shell setenforce 0
for((i = 1; i <10; i ++));
do
time1 = $(date "+%Y%m%d-%H%M%S")
echo $ time1 >> ./log.txt
adb shell dumpsys meminfo >> ./log.txt
sleep 20s
done