0

ヒープだけでなく、合計メモリ、使用済みメモリ、空きメモリなどの物理メモリに関する情報を取得しようとしています。

ここでそのような質問を検索しましたが、正しい答えが見つかりませんでした。

私はこの方法を試しました:

long freeSize = 0L;
    long totalSize = 0L;
    long usedSize = 0L;


    try {
        Runtime info = Runtime.getRuntime();
        freeSize = info.freeMemory();
        totalSize = info.totalMemory();
        usedSize = totalSize - freeSize;
    } catch (Exception e) {
        e.printStackTrace();
    }

しかし、正しい情報を取得しないでください。

また、MemoryInfoクラスで試しました。

ありがとう!

4

3 に答える 3

0

現在実行中のアプリケーションのメモリ使用量を計算する別の方法。

public static long getUsedMemorySize() {

    long freeSize = 0L;
    long totalSize = 0L;
    long usedSize = -1L;
    try {
        Runtime info = Runtime.getRuntime();
        freeSize = info.freeMemory();
        totalSize = info.totalMemory();
        usedSize = totalSize - freeSize;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return usedSize;

}
于 2012-12-06T12:21:48.277 に答える
0
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
            MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
            activityManager.getMemoryInfo(memoryInfo);

            String TAG = "a";
            Log.i(TAG, " memoryInfo.availMem " + memoryInfo.availMem + "\n" );
            Log.i(TAG, " memoryInfo.lowMemory " + memoryInfo.lowMemory + "\n" );
            Log.i(TAG, " memoryInfo.threshold " + memoryInfo.threshold + "\n" );

            List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();

            Map<Integer, String> pidMap = new TreeMap<Integer, String>();
            for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses)
            {
                pidMap.put(runningAppProcessInfo.pid, runningAppProcessInfo.processName);
            }

            Collection<Integer> keys = pidMap.keySet();

            for(int key : keys)
            {
                int pids[] = new int[1];
                pids[0] = key;
                android.os.Debug.MemoryInfo[] memoryInfoArray = activityManager.getProcessMemoryInfo(pids);
                for(android.os.Debug.MemoryInfo pidMemoryInfo: memoryInfoArray)
                {
                    Log.i(TAG, String.format("** MEMINFO in pid %d [%s] **\n",pids[0],pidMap.get(pids[0])));
                    Log.i(TAG, " pidMemoryInfo.getTotalPrivateDirty(): " + pidMemoryInfo.getTotalPrivateDirty() + "\n");
                    Log.i(TAG, " pidMemoryInfo.getTotalPss(): " + pidMemoryInfo.getTotalPss() + "\n");
                    Log.i(TAG, " pidMemoryInfo.getTotalSharedDirty(): " + pidMemoryInfo.getTotalSharedDirty() + "\n");
                }
            }
于 2012-12-07T08:38:51.937 に答える