2012-11-09 16 views
4

我的应用程序有一个线程服务,它在后台运行并侦听来自远程服务器的通信。 当线程运行时,我在我的LogCat中看到很多dalvikvm操作。 可以吗?或者,也许这是一些分类内存泄漏:在我的应用程序中努力工作的Android垃圾回收器

这是我的线程的run():

@Override 
public void run() { 
    startKeepAliveTimer(); 
    try { 
      socket = new Socket(host, port); 
      if (socket != null) 
      { 
       Log.i("ServerConnection", "Server connection opened"); 
       this.app.setConnectedToServer(true); 
       serverManager.loginToServer(); 
      } 
      else 
       app.setConnectedToServer(false); 

      while (app.isConnectedToServer()) 
      { 
       app.getFacebookManager().refreshAccessToken();      
       BufferedReader in = new BufferedReader(new InputStreamReader(
       socket.getInputStream())); 
       String input; 
       input = in.readLine(); 
       if (input != null) 
       { 
        lastOnline = System.currentTimeMillis(); 
        input = input.trim(); 
        input = app.decrypt(input); 
        Log.e("Server Reponse", input);     
        serverManager.processData(app.convertToJSONObject(input)); 
       } 
      } 
     } catch (IOException e) { 
      Log.e("ServerConnection", e.toString()); 
     }   

     Log.i("ServerConnection", "Server connection closed"); 
} 

这是我的堆栈跟踪:

paused 8ms 
      11-09 15:42:36.862: D/dalvikvm(3806): GC_CONCURRENT freed 1367K, 33% free 10661K/15815K, paused 1ms+2ms 
      11-09 15:42:36.892: D/dalvikvm(3806): GC_CONCURRENT freed 1390K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:36.902: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:36.932: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:36.952: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:36.972: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:36.992: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 12ms 
      11-09 15:42:37.022: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 2ms+1ms 
      11-09 15:42:37.032: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.052: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+1ms 
      11-09 15:42:37.072: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 9ms 
      11-09 15:42:37.092: D/dalvikvm(3806): GC_CONCURRENT freed 1245K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:37.112: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.132: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+1ms 
      11-09 15:42:37.152: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 9ms 
      11-09 15:42:37.182: D/dalvikvm(3806): GC_CONCURRENT freed 1245K, 25% free 12018K/15815K, paused 1ms+1ms 
      11-09 15:42:37.212: D/dalvikvm(3806): GC_CONCURRENT freed 3208K, 33% free 10664K/15815K, paused 1ms+0ms 
      11-09 15:42:37.232: D/dalvikvm(3806): GC_FOR_ALLOC freed 1426K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:37.252: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:37.272: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:37.302: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 3ms+0ms 
      11-09 15:42:37.312: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:37.332: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:37.362: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 7ms 
      11-09 15:42:37.402: D/dalvikvm(3806): GC_CONCURRENT freed 1360K, 33% free 10667K/15815K, paused 1ms+1ms 
      11-09 15:42:37.432: D/dalvikvm(3806): GC_CONCURRENT freed 1299K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:37.452: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 13ms 
      11-09 15:42:37.472: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:37.492: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 12ms 
      11-09 15:42:37.512: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+0ms 
      11-09 15:42:37.532: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.552: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:37.572: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.622: D/dalvikvm(3806): GC_CONCURRENT freed 1266K, 32% free 10761K/15815K, paused 1ms+1ms 
      11-09 15:42:37.642: D/dalvikvm(3806): GC_FOR_ALLOC freed 1562K, 33% free 10629K/15815K, paused 13ms 
      11-09 15:42:37.672: D/dalvikvm(3806): GC_CONCURRENT freed 1367K, 33% free 10653K/15815K, paused 1ms+1ms 
      11-09 15:42:37.692: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:37.712: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:37.722: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.752: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 32% free 10758K/15815K, paused 2ms+1ms 
      11-09 15:42:37.762: D/dalvikvm(3806): GC_FOR_ALLOC freed 1559K, 33% free 10629K/15815K, paused 11ms 
      11-09 15:42:37.792: D/dalvikvm(3806): GC_CONCURRENT freed 1367K, 33% free 10653K/15815K, paused 2ms+1ms 
      11-09 15:42:37.812: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:37.832: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:37.852: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:37.872: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+1ms 
      11-09 15:42:37.882: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 9ms 
      11-09 15:42:37.912: D/dalvikvm(3806): GC_CONCURRENT freed 1245K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:37.932: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:37.962: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 0ms+1ms 
      11-09 15:42:37.972: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:38.002: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 32% free 10758K/15815K, paused 1ms+1ms 
      11-09 15:42:38.012: D/dalvikvm(3806): GC_FOR_ALLOC freed 1559K, 33% free 10629K/15815K, paused 12ms 
      11-09 15:42:38.042: D/dalvikvm(3806): GC_CONCURRENT freed 1367K, 33% free 10653K/15815K, paused 1ms+1ms 
      11-09 15:42:38.062: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:38.092: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:38.112: D/dalvikvm(3806): GC_CONCURRENT freed 1293K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:38.132: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 13ms 
      11-09 15:42:38.162: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 2ms+1ms 
      11-09 15:42:38.182: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:38.202: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:38.222: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:38.242: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.262: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 7ms 
      11-09 15:42:38.272: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+1ms 
      11-09 15:42:38.292: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 8ms 
      11-09 15:42:38.322: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10653K/15815K, paused 1ms+1ms 
      11-09 15:42:38.342: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 7ms 
      11-09 15:42:38.362: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.382: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:38.402: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+0ms 
      11-09 15:42:38.412: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 9ms 
      11-09 15:42:38.442: D/dalvikvm(3806): GC_CONCURRENT freed 1245K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.462: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:38.492: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 25% free 12019K/15815K, paused 1ms+2ms 
      11-09 15:42:38.522: D/dalvikvm(3806): GC_CONCURRENT freed 3103K, 32% free 10769K/15815K, paused 1ms+2ms 
      11-09 15:42:38.532: D/dalvikvm(3806): GC_FOR_ALLOC freed 1570K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:38.552: D/dalvikvm(3806): GC_CONCURRENT freed 1270K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.572: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 7ms 
      11-09 15:42:38.592: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:38.622: D/dalvikvm(3806): GC_CONCURRENT freed 1293K, 32% free 10758K/15815K, paused 1ms+1ms 
      11-09 15:42:38.632: D/dalvikvm(3806): GC_FOR_ALLOC freed 1559K, 33% free 10629K/15815K, paused 11ms 
      11-09 15:42:38.662: D/dalvikvm(3806): GC_CONCURRENT freed 1246K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.682: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 13ms 
      11-09 15:42:38.702: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.722: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:38.742: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.762: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:38.782: D/dalvikvm(3806): GC_CONCURRENT freed 8K, 33% free 10644K/15815K, paused 1ms+1ms 
      11-09 15:42:38.802: D/dalvikvm(3806): GC_FOR_ALLOC freed 1406K, 33% free 10629K/15815K, paused 10ms 
      11-09 15:42:38.822: D/dalvikvm(3806): GC_CONCURRENT freed 1245K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:38.842: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:38.872: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 24% free 12027K/15815K, paused 1ms+1ms 
      11-09 15:42:38.902: D/dalvikvm(3806): GC_CONCURRENT freed 3208K, 33% free 10672K/15815K, paused 1ms+0ms 
      11-09 15:42:38.912: D/dalvikvm(3806): GC_FOR_ALLOC freed 1450K, 33% free 10629K/15815K, paused 9ms 
      11-09 15:42:38.942: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10653K/15815K, paused 1ms+1ms 
      11-09 15:42:38.962: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 7ms 
      11-09 15:42:38.982: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.002: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:39.022: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.042: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:39.072: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:39.092: D/dalvikvm(3806): GC_CONCURRENT freed 1390K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:39.112: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:39.132: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 
      11-09 15:42:39.152: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:39.172: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+0ms 
      11-09 15:42:39.192: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:39.212: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.232: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:39.252: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.272: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:39.302: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 2ms+1ms 
      11-09 15:42:39.322: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:39.342: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 2ms+1ms 
      11-09 15:42:39.362: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:39.382: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.402: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 11ms 
      11-09 15:42:39.432: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 32% free 10758K/15815K, paused 1ms+1ms 
      11-09 15:42:39.442: D/dalvikvm(3806): GC_FOR_ALLOC freed 1559K, 33% free 10629K/15815K, paused 11ms 
      11-09 15:42:39.472: D/dalvikvm(3806): GC_CONCURRENT freed 1246K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.492: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 10ms 
      11-09 15:42:39.522: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.532: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 8ms 
      11-09 15:42:39.562: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 2ms+1ms 
      11-09 15:42:39.572: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:39.602: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.612: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 12ms 
      11-09 15:42:39.642: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.652: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 9ms 
      11-09 15:42:39.682: D/dalvikvm(3806): GC_CONCURRENT freed 1269K, 32% free 10758K/15815K, paused 1ms+2ms 
      11-09 15:42:39.692: D/dalvikvm(3806): GC_FOR_ALLOC freed 1559K, 33% free 10629K/15815K, paused 10ms 
      11-09 15:42:39.722: D/dalvikvm(3806): GC_CONCURRENT freed 1246K, 33% free 10652K/15815K, paused 1ms+1ms 
      11-09 15:42:39.742: D/dalvikvm(3806): GC_FOR_ALLOC freed 1414K, 33% free 10637K/15815K, paused 12ms 
      11-09 15:42:39.762: D/dalvikvm(3806): GC_CONCURRENT freed 1366K, 33% free 10661K/15815K, paused 1ms+1ms 

UPDATE: 移除后所有来自循环内部的“新”元素,我使用了DDMS分配追踪器,并发现我在input = in.readLine()中有很多分配。在InputStream对象内使用wrap()函数的东西......它怎么可能?以及要做什么

+0

你可以发布一些你的服务代码,以更好地理解会发生什么吗? – fiddler

+0

你是对的 - 我已经添加了它 –

+1

也许你可以尝试在'while循环'之外实例化你的'BufferedReader' ... –

回答

5

它不应该是一个问题 - 毕竟,这不是一个错误,而是GC在做它的工作。但是,在这种情况下,每秒都会释放大量内存(并且由于堆的状态保持不变(分配 - 空闲),这也意味着该内存正在每秒分配一次。这将加剧电池消耗,并会导致落后于你的应用程序

与其他人一样的建议,尝试实例化对象while之外,而不是创建和删除它们的每一个回路。例如,你的循环更改为:。

BufferedReader in = new BufferedReader(new InputStreamReader(
      socket.getInputStream())); 
while (app.isConnectedToServer()) 
     { 
      app.getFacebookManager().refreshAccessToken();      
      String input; 
      input = in.readLine(); 
      if (input != null) 
      { 
       lastOnline = System.currentTimeMillis(); 
       input = input.trim(); 
       input = app.decrypt(input); 
       Log.e("Server Reponse", input);     
       serverManager.processData(app.convertToJSONObject(input)); 
      } 
     } 
0

当您创建并不再使用的对象时,垃圾收集器将激活。

也就是说,你的run()(包括里面运行的那个也有这个关键字的方法)将被收集的任何new关键字将被垃圾收集。

有些东西需要一直重新创建(例如,Streams),但有些可能保留在内存中(例如,套接字,如果其生命周期得到正确处理)。你可以在startKeepAliveTimer();里面挖掘; serverManager.processData(app.convertToJSONObject(input));和其他方法来检查他们是不是每次都创建可以通过您的服务生活保持的东西。

尽管如此......在我看来,GC在做的工作很好,而且它总是在收集和内存使用相当稳定,我不会担心太多。

0

我同意Budius。 GC留给android操作系统。如果您在应用程序中遇到过多的内存消耗,请尝试修改它。使用MAT分析器来查找内存泄漏。 这个视频是关于内存管理。 http://www.youtube.com/watch?v=_CruQY55HOk。 。所以如果你看视频,你应该能够摆脱内存泄漏。

此外,如果您有一个长时间运行的操作,请确保您在线程上运行它们。我建议你使用asynctask。在UI线程上运行长时间运行的操作也会导致内存泄漏。

+0

在从循环中删除所有“新”元素后,我使用了DDMS分配追踪器,并发现我在input = in.readLine()中有很多分配。在InputStream对象内使用wrap()函数的东西......它怎么可能?和做什么 –