【问题标题】:Memory Management in the android environmentandroid环境下的内存管理
【发布时间】:2013-07-03 07:47:31
【问题描述】:

我最近一直在研究内存管理,我创建了一个Service,如下所示:

public class MemoryManagerService extends Service {

    private boolean isRunning = true;
    private Thread memoryThread;

    @Override
    public IBinder onBind(Intent intent) {

        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        Log.v("MemoryThread: ", "Created");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        memoryThread = new Thread(new MemoryManagerThread());
        memoryThread.start();
        Log.v("MemoryThread: ", "Started");
        isRunning = true;
        return START_STICKY;
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        //memoryThread.stop();
        Log.v("MemoryThread: ", "Stopped");
        isRunning = false;
    }

    private class MemoryManagerThread implements Runnable
    {
        public MemoryManagerThread() {

        }

        @Override
        public void run() {

            while(isRunning) {
                try 
                {
                    Thread.sleep(5000);
                    Log.v("Allocated bytes", Long.toString(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
                }
                catch(Exception e) {}
            }
        }
    }
}

它只会每 5 秒输出一次分配的内存。这个服务是从我的主activity开始的。当然应用程序会分配内存,但我担心的是内存的增加。

我在LogCat 中看到,分配的字节每5 秒增加80 bytes,这意味着16 bytes/sec。这里的数字不是很大,但可能是应用程序“永远”运行,或者直到GC 启动。当应用程序启动时,它使用大约14 mb 的内存。我还应该提到我几乎没有看到GC_CONCURRENCE,这意味着GC 由于内存不足而正在运行。我应该担心应用中的内存吗?

【问题讨论】:

  • 这是一个真正的应用程序吗?对我来说看起来有点没用。
  • 我刚刚创建了一个服务,从我的实际应用程序开始,监控应用程序的内存并查看内存的行为。
  • 你有内存问题吗?为什么不使用 SDK 的内存分析工具?
  • 我已经修复了我的记忆问题,是的,我已经使用 MAT 工具进行了分析。关于堆的增加,我的问题有点理论化,这是正常的事情,也许是不正常的..

标签: android android-memory


【解决方案1】:

我敢打赌,如果你只让你的线程睡 3000 次,你将每三秒获得 80 个字节。很多小东西会在您的应用程序中分配内存,然后可以在某个(通常是不合时宜的)点进行清理。

【讨论】:

  • 所以只要我没有看到 GC 4% 24+2ms 的东西就没什么好担心的?
  • 是的。没什么好担心的。
猜你喜欢
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多