在Android中监控我的应用占用的内存

时间:2011-07-20 18:47:52

标签: java android memory memory-management

我试图优化我的应用消耗的内存量。 当我的应用程序加载(按住主页键然后选择任务管理器),我可以看到应用程序占用17MB,但该值不刷新。 如何实时跟踪该值? DDMS可以选择吗?请具体一点,我已经搜索了很多,没有找到。 提前谢谢

3 个答案:

答案 0 :(得分:4)

另一个更加面向代码的内存跟踪调试方法出现在https://stackoverflow.com/a/6471227/978329中,其中包含指向更多信息的博客的链接。

为了简短起见,您可以将以下代码(或其改进版本)小心地放入某种点击事件中,并将实时信息记录到日志或Toast消息中:

View v = (View) findViewById(R.id.SomeLayout);

    v.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {

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

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

            Toast.makeText(ThisActivity.this,
                    memMessage,
                    Toast.LENGTH_LONG).show();
            Log.i("log_tag", memMessage);
        }
        });   

答案 1 :(得分:3)

是的,您可以使用DDMS,有一个指南here。查看“查看进程的堆使用情况”

答案 2 :(得分:2)

使用eclipse内存分析器

Here

安装MAT后。在eclipse IDE中,从设备视图中选择您的应用程序,然后单击转储HPROF文件。它会自动打开一个向导,供您选择要执行的分析。