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