我一直在寻找到内存管理最近,我创建一个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的内存分析工具? –