私はSamsungデバイスで奇妙なメモリリークを受けています。私はナビゲーションの多くを行う場合、それはこののStackTraceとOutOfMemoryException例外を生成します。Samsungデバイスがバックナビゲーションでメモリを割り当てます
Exception: Failed to allocate a 276060 byte allocation with 184864 free bytes and 180KB until OOM
StackTrace:
--- End of managed Java.Lang.OutOfMemoryError stack trace ---
java.lang.OutOfMemoryError: Failed to allocate a 276060 byte allocation with 184864 free bytes and 180KB until OOM
**at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
at android.graphics.Bitmap.createBitmap(Bitmap.java:915)
at android.widget.TextView$MagnifierView.getContentsBitmap(TextView.java:14862)
at android.widget.TextView$MagnifierView.<init>(TextView.java:14806)
at android.widget.TextView.getMagnifierView(TextView.java:14707)**
at android.widget.Editor.onDetachedFromWindow(Editor.java:469)
at android.widget.TextView.onDetachedFromWindowInternal(TextView.java:6224)
at android.view.View.dispatchDetachedFromWindow(View.java:16766)
at android.view.ViewGroup.removeAllViewsInLayout(ViewGroup.java:5154)
at md58b29b5ebe7ec5add1ba4eaa7f6c6bb96.EventDetailsView_1.n_onDestroy(Native Method)
at md58b29b5ebe7ec5add1ba4eaa7f6c6bb96.EventDetailsView_1.onDestroy(EventDetailsView_1.java:47)
at android.app.Activity.performDestroy(Activity.java:7210)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1161)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4621)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4661)
at android.app.ActivityThread.-wrap7(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1703)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
誰もがこれらの行(下記参照)を行うと、それがされているとき、なぜ地獄は、それがメモリ(ビットマップ)を割り当て、どのような考えを持っています破壊されました?私の知る限りは、私のテストから理解し、活動がOnDestroyed
またはFinish
が呼び出された後もメモリに保持されている
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
at android.graphics.Bitmap.createBitmap(Bitmap.java:915)
at android.widget.TextView$MagnifierView.getContentsBitmap(TextView.java:14862)
at android.widget.TextView$MagnifierView.<init>(TextView.java:14806)
at android.widget.TextView.getMagnifierView(TextView.java:14707)**
。私が戻って1分待つと、空きメモリが再び登るのが分かります。それ以外の場合は、割り当てられたメモリが大きくなり、ある時点で別のナビゲーションを実行するのに十分な領域がないため、システムは古いアクティビティを破棄してメモリを解放しようとします。しかし、このアクティビティは、Destroy-Process中にフリーではないメモリ(MagnifierView)を割り当てています。
私はXperia Z5で同じことをすると、メモリは後方ナビゲーション直後に解放されます。
は、あなたがフィニッシュ()を使用しています。あなたの活動に活動がメモリリークが残念ながら –
利用アンドロイドスタジオプロファイラで入力すると、ビットマップ変数をきれいにしようとすると、?これらのアプリはXamarinで開発され、Inspectorはアンドロイドスタジオとしては良くない。私はビットマップをきれいにするのが大好きですが、私はmagnifierviewがどこから来て、実際に何が起こっているのか分かりません。 – tyczj
で何が起こっているかの活動を見つけるためにonPauseまたはonDestroy –