5

記憶は大きな話題のようで、具体的な答えは見つかりません。ヒープで利用可能な量についての回答があり、どれだけ使用する必要があるかがわかります。アプリがヒープを使用しているメモリの量をプログラムで決定するためのコーディング方法についての回答が必要ですか?そして、私はどのくらいの総メモリを使用していますか?

4

2 に答える 2

3

これは機能します:

  Debug.MemoryInfo memoryInfo = new Debug.MemoryInfo();
  Debug.getMemoryInfo(memoryInfo);

  String memMessage = String.format("App Memory: Pss=%.2f MB\nPrivate=%.2f MB\nShared=%.2f MB",
  memoryInfo.getTotalPss() / 1024.0,
  memoryInfo.getTotalPrivateDirty() / 1024.0,
  memoryInfo.getTotalSharedDirty() / 1024.0);

  Toast.makeText(this,memMessage,Toast.LENGTH_LONG).show();
  Log.i("log_tag", memMessage);
于 2012-07-12T05:21:01.723 に答える
2

Android Shellコマンドを使用top -d 1 -n 1して、プロセス名またはプロセスごとに使用されたメモリを含むすべてのプロセスリストを取得し、システムからの戻り文字列からプロセス情報を抽出します。

BufferedReader in = null;

        try {
            Process process = null;
            process = Runtime.getRuntime().exec("top -n 1 -d 1");

            in = new BufferedReader(new 
            InputStreamReader(process.getInputStream()));

            String line ="";
            String content = "";

            while((line = in.readLine()) != null) {
                content += line + "\n";
            }
            System.out.println(content);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            if(in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }


次のように文字列を取得します。

PID  PPID USER   STAT VSZ  %MEM  %CPU COMMAND
9673 9672 root    R   712   0.1   0.0 top -d 1 -n 1
2489 2386 system  S   369m  87.7  0.0 system_server
3101 2386 app_23  S   304m  72.3  0.0 com.android.browser
2581 2386 radio   S   279m  66.3  0.0 com.android.phone
2585 2386 app_15  S   271m  64.4  0.0 com.android.launcher
于 2012-07-09T06:17:06.727 に答える