Android scavenger working in my application

My application has a Stream Service, which runs in the background and listens for communication from a remote server. while the thread is running, I see a lot of dalvikvm actions in my LogCat. This is normal? or maybe this is some sort of memory leak sorting:

this is my thread 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"); } 

this is my stacktrace:

 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: after removing all the β€œnew” elements from the loop, I used the DDMS distribution tracker and found that I have a lot of highlighting in the input = in.readLine (); something with the wrap () function inside the InputStream object ... how could it be? and what to do

+4
source share
3 answers

This should not be a big problem - after all, this is not a mistake, but a GC doing its job.

However, in this case, a lot of memory is freed every second (And since the heap state remains unchanged (Allocated-Free), this also means that this memory is allocated every second. This will increase the battery consumption and cause delays in your application.

Like others, try creating objects outside of while , instead of creating and deleting them every loop. For example, change your loop to:

 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)); } } 
+5
source

The garbage collector is activated when you have objects that have been created and are no longer in use.

This means that any new keyword on your run() (including methods called inside the run that also have this keyword) will collect, will garbage later.

Some things are necessary for re-creation all the time (for example, threads), but some can be stored in memory (for example, a socket if its life cycle is processed correctly). You can dig inside startKeepAliveTimer(); ; serverManager.processData(app.convertToJSONObject(input)); and other methods to verify that they do not create material each time that can be stored during their service life.

But, despite all this ... it seems to me that the GC works, it's good, and it always collects and memory usage is pretty stable, I would not worry too much.

0
source

I agree with Budius. GC is left for android os. If you experience excessive memory consumption in your application, try changing it. Use the MAT analyzer to detect memory leaks. This video is about memory management. http://www.youtube.com/watch?v=_CruQY55HOk ., Therefore, if you look at the video, you can get rid of memory leaks.

Also, if you have a lot of work, make sure you run them in threads. I suggest you use asynctask. Starting continuous operation in the user interface thread also causes a memory leak.

0
source

Source: https://habr.com/ru/post/1445058/


All Articles