您的位置:首页 > 移动开发 > Android开发

android调试:代码中打印内存信息

2014-11-03 22:50 411 查看
一、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):
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: