Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid memory leak in a Thread run() function
    primarykey
    data
    text
    <p>I have this Thread which is running from a Service. The run's loop is running with no problem for around 15 minutes. After that - my GC gets crazy with a memory leak and then the function doesn't work good anymore. </p> <p>I've used the DDMS Allocation Tracker to find the leak and it seems that the leak is inside the <code>input = in.readLine();</code> line. I don't really know how to solve it but this is my code, stack trace and Allocation Tracker snapshot:</p> <p><strong>code</strong>:</p> <pre><code>@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); InputStreamReader inputStreamReader = new InputStreamReader(socket.getInputStream()); BufferedReader in = new BufferedReader(inputStreamReader); String input; while (app.isConnectedToServer()) { app.getFacebookManager().refreshAccessToken(); 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"); } private void startKeepAliveTimer() { Timer timer = new Timer("keepAlive", true); timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { keepAlive(); } }, 0, keepAlive); } </code></pre> <p><strong>stacktrace</strong></p> <pre><code>11-12 09:55:38.349: D/dalvikvm(2251): GC_CONCURRENT freed 1164K, 23% free 9987K/12871K, paused 1ms+1ms 11-12 09:55:38.899: D/dalvikvm(2251): GC_CONCURRENT freed 1072K, 23% free 9989K/12871K, paused 1ms+1ms 11-12 09:55:39.439: D/dalvikvm(2251): GC_CONCURRENT freed 1075K, 23% free 9967K/12871K, paused 0ms+1ms 11-12 09:55:39.959: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 0ms+1ms 11-12 09:55:40.499: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9992K/12871K, paused 0ms+0ms 11-12 09:55:41.069: D/dalvikvm(2251): GC_CONCURRENT freed 1079K, 23% free 9983K/12871K, paused 1ms+1ms 11-12 09:55:41.749: D/dalvikvm(2251): GC_CONCURRENT freed 1094K, 23% free 9967K/12871K, paused 2ms+2ms 11-12 09:55:42.379: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:42.909: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:43.459: D/dalvikvm(2251): GC_CONCURRENT freed 1061K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:43.979: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:44.549: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:45.079: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:45.629: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:46.179: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:46.709: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:47.229: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:47.749: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:48.299: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:48.839: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9989K/12871K, paused 1ms+0ms 11-12 09:55:49.379: D/dalvikvm(2251): GC_CONCURRENT freed 1075K, 23% free 9991K/12871K, paused 1ms+0ms 11-12 09:55:49.909: D/dalvikvm(2251): GC_CONCURRENT freed 1078K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:50.429: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 3ms+1ms 11-12 09:55:50.949: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:51.499: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:52.019: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 0ms+0ms 11-12 09:55:52.539: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+1ms 11-12 09:55:53.069: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 2ms+1ms 11-12 09:55:53.609: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 1ms+0ms 11-12 09:55:54.139: D/dalvikvm(2251): GC_CONCURRENT freed 1045K, 23% free 9967K/12871K, paused 0ms+1ms </code></pre> <p><strong>Allocation Tracker:</strong> <img src="https://i.stack.imgur.com/8Mrsi.jpg" alt="DDMS Memory Allocation Tracker"></p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload