一、Debug和ActivityManager的相关方法:
public void printMemoryInfo() {
String tag = "APPActivity";
final ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(info);
Log.i(tag, "系统剩余内存:" + (info.availMem >> 10) + "k");
Log.i(tag, "系统是否处于低内存运行:" + info.lowMemory);
Log.i(tag, "当系统剩余内存低于" + (info.threshold >> 10) + "时就看成低内存运行");
Log.i(tag, "NativeHeapSizeTotal:" + (Debug.getNativeHeapSize() >> 10));
Log.i(tag, "NativeAllocatedHeapSize:" + (Debug.getNativeHeapAllocatedSize() >> 10));
Log.i(tag, "NativeAllocatedFree:" + (Debug.getNativeHeapFreeSize() >> 10));
Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
Debug.getMemoryInfo(memoryInfo);
Log.i(tag, "memoryInfo.dalvikPrivateDirty:" + (memoryInfo.dalvikPrivateDirty));
Log.i(tag, "memoryInfo.dalvikPss:" + (memoryInfo.dalvikPss ));
Log.i(tag, "memoryInfo.dalvikSharedDirty:" + (memoryInfo.dalvikSharedDirty ));
Log.i(tag, "memoryInfo.nativePrivateDirty:" + (memoryInfo.nativePrivateDirty ));
Log.i(tag, "memoryInfo.nativePss:" + (memoryInfo.nativePss ));
Log.i(tag, "memoryInfo.nativeSharedDirty:" + (memoryInfo.nativeSharedDirty ));
Log.i(tag, "memoryInfo.otherPrivateDirty:" + (memoryInfo.otherPrivateDirty));
Log.i(tag, "memoryInfo.otherPss:" + (memoryInfo.otherPss ));
Log.i(tag, "memoryInfo.otherSharedDirty:" + (memoryInfo.otherSharedDirty ));
Log.i(tag, "memoryInfo.dumpsys:" + (dumpMemoryInfo() ));
}
二、Root机器可以使用dumsys命令打印:
<uses-permission android:name="android.permission.DUMP"/>
public String dumpMemoryInfo() {
Process process;
try {
process = Runtime.getRuntime().exec("su -c dumpsys meminfo com.tutu.example");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()), 1024*4);
String line;
StringBuilder log = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
log.append("\n");
}
return log.toString();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
11-03 22:39:58.260: I/APPActivity(6802): 系统剩余内存:603160k
11-03 22:39:58.260: I/APPActivity(6802): 系统是否处于低内存运行:false
11-03 22:39:58.260: I/APPActivity(6802): 当系统剩余内存低于64时就看成低内存运行
11-03 22:39:58.260: I/APPActivity(6802): NativeHeapSizeTotal:5600
11-03 22:39:58.261: I/APPActivity(6802): NativeAllocatedHeapSize:5264
11-03 22:39:58.262: I/APPActivity(6802): NativeAllocatedFree:335
11-03 22:39:58.309: I/APPActivity(6802): memoryInfo.dalvikPrivateDirty:3208
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.dalvikPss:3688
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.dalvikSharedDirty:8124
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.nativePrivateDirty:0
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.nativePss:0
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.nativeSharedDirty:0
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.otherPrivateDirty:4796
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.otherPss:7015
11-03 22:39:58.310: I/APPActivity(6802): memoryInfo.otherSharedDirty:3888
11-03 22:39:58.582: I/APPActivity(6802): memoryInfo.dumpsys:Applications Memory Usage (kB):
11-03 22:39:58.582: I/APPActivity(6802): Uptime: 172051581 Realtime: 453230133
11-03 22:39:58.582: I/APPActivity(6802): ** MEMINFO in pid 6802 [com.tutu.example] **
11-03 22:39:58.582: I/APPActivity(6802): Shared Private Heap Heap Heap
11-03 22:39:58.582: I/APPActivity(6802): Pss Dirty Dirty Size Alloc Free
11-03 22:39:58.582: I/APPActivity(6802): ------ ------ ------ ------ ------ ------
11-03 22:39:58.582: I/APPActivity(6802): Native 0 0 0 5600 5264 335
11-03 22:39:58.582: I/APPActivity(6802): Dalvik 3732 8124 3252 6320 6226 94
11-03 22:39:58.582: I/APPActivity(6802): Cursor 0 0 0
11-03 22:39:58.582: I/APPActivity(6802): Ashmem 0 0 0
11-03 22:39:58.582: I/APPActivity(6802): Other dev 4 60 0
11-03 22:39:58.582: I/APPActivity(6802): .so mmap 1284 2944 1000
11-03 22:39:58.582: I/APPActivity(6802): .jar mmap 2 0 0
11-03 22:39:58.582: I/APPActivity(6802): .apk mmap 532 0 0
11-03 22:39:58.582: I/APPActivity(6802): .ttf mmap 49 0 0
11-03 22:39:58.582: I/APPActivity(6802): .dex mmap 1074 0 4
11-03 22:39:58.582: I/APPActivity(6802): Other mmap 407 332 140
11-03 22:39:58.582: I/APPActivity(6802): Unknown 3667 552 3656
11-03 22:39:58.582: I/APPActivity(6802): TOTAL 10751 12012 8052 11920 11490 429
11-03 22:39:58.582: I/APPActivity(6802):
11-03 22:39:58.582: I/APPActivity(6802): Objects
11-03 22:39:58.582: I/APPActivity(6802): Views: 23 ViewRootImpl: 1
11-03 22:39:58.582: I/APPActivity(6802): AppContexts: 14 Activities: 1
11-03 22:39:58.582: I/APPActivity(6802): Assets: 14 AssetManagers: 14
11-03 22:39:58.582: I/APPActivity(6802): Local Binders: 7 Proxy Binders: 25
11-03 22:39:58.582: I/APPActivity(6802): Death Recipients: 0
11-03 22:39:58.582: I/APPActivity(6802): OpenSSL Sockets: 0
11-03 22:39:58.582: I/APPActivity(6802):
11-03 22:39:58.582: I/APPActivity(6802): SQL
11-03 22:39:58.582: I/APPActivity(6802): MEMORY_USED: 0
11-03 22:39:58.582: I/APPActivity(6802): PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
11-03 22:39:58.582: I/APPActivity(6802):
11-03 22:39:58.582: I/APPActivity(6802):