32

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 to look for leak and what does it meant by " See java.io.Closeable"

dreamer1989
  • 954
  • 3
  • 10
  • 29

6 Answers6

14

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,224
  • 1
  • 13
  • 33
7

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();
}
matteopuc
  • 7,683
  • 5
  • 48
  • 75
5

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,213
  • 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,609
  • 9
  • 34
  • 51
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
  • 790
  • 6
  • 5
-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,550
  • 1
  • 16
  • 34