41

I am getting this message in logcat

A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.

Where do I look for the leak and what does it mean by " See java.io.Closeable".

Janusz
  • 187,060
  • 113
  • 301
  • 369
dreamer1989
  • 1,075
  • 3
  • 12
  • 29

7 Answers7

16

That means you have opened something but never close them.Closable have a method close which you must call to release the resources associated with the component when you no longer need it.

To look for the leak, you can try MAT, I often use it to find memory leaks(static data holding a reference to Activity, etc).

suitianshi
  • 3,300
  • 1
  • 17
  • 34
8

For me the problem happened because I was overriding the method onBackPressed() without calling the super()

@Override
public void onBackPressed() {
    //some coding here
    super.onBackPressed();
}
superpuccio
  • 11,674
  • 8
  • 65
  • 93
6

if you see something like:

10-12 16:46:44.719 2710-2719/? E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
10-12 16:46:44.719 2710-2719/? E/StrictMode: java.lang.Throwable: Explicit termination method 'end' not called
10-12 16:46:44.719 2710-2719/? E/StrictMode:     at dalvik.system.CloseGuard.open(CloseGuard.java:184)
10-12 16:46:44.719 2710-2719/? E/StrictMode:     at java.util.zip.Inflater.<init>(Inflater.java:82)
10-12 16:46:44.719 2710-2719/? E/StrictMode:     at com.android.okio.GzipSource.<init>(GzipSource.java:57)
10-12 16:46:44.719 2710-2719/? E/StrictMode:     at com.android.okhttp.internal.http.HttpEngine.initContentStream(HttpEngine.java:490)

in your stacktrace, there is a known bug in older versions of okhttp that you can avoid by forcing the use of a newer version in your gradle file.

compile 'com.squareup.okhttp3:okhttp:3.2.0'

that solved a very similar problem for me at least.

Carl-Emil Kjellstrand
  • 1,233
  • 1
  • 10
  • 17
3

The same error message also shows up when there is a problem in AndroidManifest.xml. For me, the <activity> tag accidentally went out of <application>

This is correct:

<application ... >
    ...
    <activity ... />
</application>

This will result in "A resource was acquired at attached stack trace but never released" when starting the activity:

<application ... >
    ...
</application>

<activity ... />
ByteHamster
  • 4,884
  • 9
  • 38
  • 53
0

This has happened to me while launching a second activity from another activity when I did not declare the second activity in Application.mk.

antonkronaj
  • 1,237
  • 12
  • 13
0

For me, it seems that is something related to emulator, as it disappeared by changing to another emulator. you can test on real device.

-4

My error was caused by enabling the strict mode. When I was doing redeployments on a test phone using adb, some resources were not closed correctly.

I "fixed" the error by removing deathPenalty from the strict mode:

            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
//                    .penaltyDeath()
                    .build());
vanomart
  • 1,739
  • 1
  • 18
  • 39
  • 2
    This is not a proper fix if the quote-unquote wasn't noticed. – Takeshi Kaga Mar 14 '19 at 19:00
  • 6
    Best fix ever :D – Gaëtan S Jul 10 '19 at 08:04
  • I kind of agree with vanomart. Maybe this problem doesn't always kill the app? But for me it did and eventually I wanted to move on since I couldn't find the source. I don't get what the benefit is with the penaltyDeath() except that this error wont go unnoticed, but what I do right now is watch all the stacktrace for errors so it makes no sense that the app has to die for me. I would of course prefer to know what causes it but I guess it is different sources of the problem for everybody? – Vanheden Nov 20 '21 at 05:04
  • You got down voted because that just hides problem, it doesn't fix the fact you opened resources that get didn't closed. – johngray1965 Aug 26 '23 at 12:36