2017-09-19 3 views
3

私は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で同じことをすると、メモリは後方ナビゲーション直後に解放されます。

+0

は、あなたがフィニッシュ()を使用しています。あなたの活動に活動がメモリリークが残念ながら –

+0

利用アンドロイドスタジオプロファイラで入力すると、ビットマップ変数をきれいにしようとすると、?これらのアプリはXamarinで開発され、Inspectorはアンドロイドスタジオとしては良くない。私はビットマップをきれいにするのが大好きですが、私はmagnifierviewがどこから来て、実際に何が起こっているのか分かりません。 – tyczj

+1

で何が起こっているかの活動を見つけるためにonPauseまたはonDestroy –

答えて

0

私はまだ修正をせずに、現時点ではこの問題を自分で研究しています(私はここにある任意の他のSamsung電話で再現カント

マイcrashlog:。 電話:サムスンギャラクシーA5(SM-A520F)のAndroidを7.0

Fatal Exception: java.lang.OutOfMemoryError: Failed to allocate a 276060 byte allocation with 269728 free bytes and 263KB until OOM 
    at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java) 
    at android.graphics.Bitmap.nativeCreate(Bitmap.java) 
    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:14848) 
    at android.widget.TextView$MagnifierView.<init>(TextView.java:14792) 
    at android.widget.TextView.getMagnifierView(TextView.java:14693) 
    at android.widget.Editor.onDetachedFromWindow(Editor.java:469) 
    at android.widget.TextView.onDetachedFromWindowInternal(TextView.java:6226) 
    at android.view.View.dispatchDetachedFromWindow(View.java:16770) 
    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3420) 
    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3420) 
    at android.view.ViewGroup.clearDisappearingChildren(ViewGroup.java:6564) 
    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3422) 
    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3420) 
    at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3420) 
    at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4958) 
    at android.view.ViewGroup.removeViewInternal(ViewGroup.java:4932) 
    at android.view.ViewGroup.removeView(ViewGroup.java:4863) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1520) 
    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809) 
    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3217) 
    at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:3208) 
    at android.support.v4.app.FragmentController.dispatchDestroy(FragmentController.java:262) 
    at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:350) 
    at android.support.v7.app.AppCompatActivity.onDestroy(AppCompatActivity.java:209) 
    at com.myapp.ui.activity.SellerActivity.onDestroy(SellerActivity.java:198) 
    at android.app.Activity.performDestroy(Activity.java:7220) 
    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(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)