严重异常:java.lang.OutOfMemoryError:确保本地容量(FileInputStream.open0,android.graphics.Typeface.getFullFlipFont)

时间:2018-10-05 06:51:22

标签: java android memory-leaks crash

将BuildTools从23升级到27后,我遇到了崩溃的问题。

我已经检查了探查器中的RAM使用情况-那里没有异常。应用程序有时在不同的活动中在后台崩溃,有时在前台崩溃(崩溃是完全不确定的),它似乎并不依赖于内存使用情况(能够以350mb的使用率崩溃,就像200mb一样)

我还安装了'square / leakcanary'来查找任何内存泄漏,但是那里什么也没有...

加载本地字体似乎是一个问题。我在此应用程序中不使用自定义字体。我设法使Samsung S9和Samsung S5上的应用程序崩溃。有任何想法吗? :(

感谢您的帮助!

Stacktrace:

2018-10-05 08:09:04.740 20542-20542/pl.chillout.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: pl.chillout.debug, PID: 20542
java.lang.OutOfMemoryError: EnsureLocalCapacity
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:200)
    at java.io.FileInputStream.<init>(FileInputStream.java:150)
    at android.graphics.Typeface.getFullFlipFont(Typeface.java:1275)
    at android.graphics.Typeface.getFontPathFlipFont(Typeface.java:1220)
    at android.graphics.Typeface.SetFlipFonts(Typeface.java:1413)
    at android.graphics.Typeface.SetAppTypeFace(Typeface.java:1547)
    at android.app.Activity.onCreate(Activity.java:1020)
    at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66)
    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:321)
    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
    at pl.chillout.redesign.activity.BaseDrawerActivity.onCreate(BaseDrawerActivity.java:45)
    at pl.chillout.redesign.activity.ChilloutActivity.onCreate(ChilloutActivity.java:115)
    at android.app.Activity.performCreate(Activity.java:7174)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

4 个答案:

答案 0 :(得分:0)

查看是否在所有视图中明确指定默认字体即可解决此问题。似乎正在尝试加载不存在的字体。

 <TextView
  .....
 android:fontFamily="sans-serif" />

答案 1 :(得分:0)

这种情况的原因 您正在使用这样的静态对象:

private static TextView textView; //DO NOT DO THIS
private static Context context; //DO NOT DO THIS

这是内存泄漏的第一个迹象。

不幸的是,没有完整的代码

答案 2 :(得分:0)

亲爱的在清单中添加largeheap = true。然后完成开始的活动。并检查您的可绘制尺寸(大小)。我在PagerView中遇到了这个问题。我调整可绘制图像的大小。并完成所有活动。并且largheap现在崩溃已删除。我认为您与orio设备有关的错误,请初始化orio设备的所有对象。

答案 3 :(得分:0)

实际上,我最终通过将BuildTools从版本27升级到版本28来完全“修复”了该崩溃(正如我在问题注释部分提到的问题不适用于发行版本)。