2013-07-03 3 views
0

Я смотрел в управление памятью в последнее время, и я создаю 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 работает из-за низкой памяти. Должен ли я беспокоиться о памяти в своем приложении?

+0

Действительно ли это приложение? Мне кажется немного бесполезным. –

+0

Я только что создал службу, чтобы начать с моего реального приложения, контролировать память приложения и просто посмотреть, как работает память. –

+0

У вас проблемы с памятью? И почему бы не использовать инструменты профилирования памяти SDK? –

ответ

1

Я бы поспорил, что если вы только спали в своей нити за 3000, вы бы получили 80 байт каждые три секунды. Множество мелких вещей выделяет память в вашем приложении, тогда она доступна для очистки в некоторой (как правило, неподходящей) точке.

+0

, так что не о чем беспокоиться, пока я не вижу материал 'GC 4% 24 + 2ms'? –

+0

Да. Не о чем беспокоиться. – HalR

 Смежные вопросы

  • Нет связанных вопросов^_^