OutOfMemory和stringBuilder

时间:2017-07-30 15:05:26

标签: android out-of-memory stringbuilder

我的应用在logCat上显示此错误:

java.lang.OutOfMemoryError: 

  at java.lang.AbstractStringBuilder.enlargeBuffer (AbstractStringBuilder.java:95)

  at java.lang.AbstractStringBuilder.append0 (AbstractStringBuilder.java:146)

  at java.lang.StringBuilder.append (StringBuilder.java:216)

  at org.chromium.content_public.browser.LoadUrlParams.buildDataUri (LoadUrlParams.java:27)

  at org.chromium.content_public.browser.LoadUrlParams.createLoadDataParamsWithBaseUrl (LoadUrlParams.java:35)

  at org.chromium.android_webview.AwContents.loadDataWithBaseURL (AwContents.java:431)

  at com.android.webview.chromium.WebViewChromium.loadDataWithBaseURL (WebViewChromium.java:188)

  at android.webkit.WebView.loadDataWithBaseURL (WebView.java:960)

  at com.google.android.gms.ads.internal.webview.p.loadDataWithBaseURL (:com.google.android.gms.DynamiteModulesA:132)

  at com.google.android.gms.ads.internal.webview.o.loadDataWithBaseURL (:com.google.android.gms.DynamiteModulesA:103)

  at com.google.android.gms.ads.internal.renderer.i.a (:com.google.android.gms.DynamiteModulesA:8)

  at com.google.android.gms.ads.internal.renderer.a.c (:com.google.android.gms.DynamiteModulesA:35)

  at com.google.android.gms.ads.internal.renderer.g.a (:com.google.android.gms.DynamiteModulesA:11)

  at com.google.android.gms.ads.internal.k.run (:com.google.android.gms.DynamiteModulesA:28)

  at android.os.Handler.handleCallback (Handler.java:739)

  at android.os.Handler.dispatchMessage (Handler.java:95)

  at android.os.Looper.loop (Looper.java:145)

  at android.app.ActivityThread.main (ActivityThread.java:6939)

  at java.lang.reflect.Method.invoke (Native Method)

  at java.lang.reflect.Method.invoke (Method.java:372)

  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

我不知道从哪里来,'因为这种错误类型通常来自图像,但我知道不会。它说了一些关于stringBuilder的东西,我真的使用StringBuilder来创建一个存储在sharedPreferences上的字符串,这个字符串是一种数组,然后我用了很多.append()来放置每个位置和一个分隔符commom 。喜欢这个

sb.append("5").append("/"); ...

然后最终结果是这样的:

5/3/7/27/10

任何人都可以告诉我发生了什么事?

THX

1 个答案:

答案 0 :(得分:0)

该错误源自谷歌Admob。

具体而言

com.google.android.gms.ads.internal.webview.p.loadDataWithBaseURL(...)
...
com.google.android.gms.ads.internal.k.run(...)

我认为问题在于它有时会在某些设备中错误地生成一长串url(将广告作为webview加载)并导致应用崩溃

尽管admob说错误存在于用户实现中,而不是SDK https://groups.google.com/forum/#!topic/google-admob-ads-sdk/xtnAcmnPYFI