【问题标题】:Monitor the memory ocuppied by my app in Android在Android中监控我的应用程序占用的内存
【发布时间】:2011-10-09 15:53:08
【问题描述】:

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

【问题讨论】:

    标签: java android memory memory-management


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用eclipse内存分析器

      Here

      安装 MAT 后。在您的 Eclipse IDE 中,从 Devices 视图中选择您的应用程序并单击 Dump HPROF 文件。它会自动打开一个向导供您选择要执行的分析类型。

      【讨论】:

        【解决方案3】:

        另一种更面向代码的内存跟踪调试方法出现在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);
                }
                });   
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-30
          • 1970-01-01
          • 1970-01-01
          • 2011-03-18
          • 2017-09-01
          • 2012-03-25
          相关资源
          最近更新 更多