【问题标题】:Crashlytics report upload crashed due java.lang.OutOfMemoryErrorCrashlytics 报告上传因 java.lang.OutOfMemoryError 而崩溃
【发布时间】:2019-12-04 08:42:39
【问题描述】:

我在 Google 控制台上报告了崩溃,其中有两个并且是相同的(因为 stackoverflow 将其检测为垃圾邮件,我将只发布一个),Crashlytics 尝试上传报告,它会由于内存不足错误而崩溃.

崩溃报告:

java.lang.OutOfMemoryError: 
  at com.android.okio.Segment.<init> (Segment.java:34)
  at com.android.okio.SegmentPool.take (SegmentPool.java:48)
  at com.android.okio.OkBuffer.writableSegment (OkBuffer.java:511)
  at com.android.okio.OkBuffer.write (OkBuffer.java:424)
  at com.android.okio.OkBuffer.clone (OkBuffer.java:740)
  at com.android.okhttp.internal.http.RetryableSink.writeToSocket (RetryableSink.java:77)
  at com.android.okhttp.internal.http.HttpConnection.writeRequestBody (HttpConnection.java:236)
  at com.android.okhttp.internal.http.HttpTransport.writeRequestBody (HttpTransport.java:77)
  at com.android.okhttp.internal.http.HttpEngine.readResponse (HttpEngine.java:610)
  at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute (HttpURLConnectionImpl.java:379)
  at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse (HttpURLConnectionImpl.java:323)
  at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode (HttpURLConnectionImpl.java:491)
  at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode (DelegatingHttpsURLConnection.java:105)
  at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode (HttpsURLConnectionImpl.java:25)
  at io.fabric.sdk.android.services.network.HttpRequest.code (HttpRequest.java:1357)
  at com.crashlytics.android.core.DefaultCreateReportSpiCall.invoke (DefaultCreateReportSpiCall.java:65)
  at com.crashlytics.android.core.CompositeCreateReportSpiCall.invoke (CompositeCreateReportSpiCall.java:18)
  at com.crashlytics.android.core.ReportUploader.forceUpload (ReportUploader.java:104)
  at com.crashlytics.android.core.ReportUploader$Worker.attemptUploadWithRetry (ReportUploader.java:242)
  at com.crashlytics.android.core.ReportUploader$Worker.onRun (ReportUploader.java:185)
  at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run (BackgroundPriorityRunnable.java:30)
  at java.lang.Thread.run (Thread.java:818)

使用的 Craslytics 库版本: answers-1.4.6、beta-1.2.10、crashlytics-2.9.8、crashlytics-core-2.6.7、crashlytics-ndk-2.0.5、fabric-1.4.7

我不知道如何重现此崩溃,所以我不知道自己修复它。解决此类崩溃问题的任何提示?

【问题讨论】:

    标签: android crash out-of-memory crashlytics google-fabric


    【解决方案1】:

    当你做一些这样的错误或导致你错误的编程时,这个错误就会显示出来。

    通常,当 Java 虚拟机由于内存不足而无法分配对象时会引发此错误,并且垃圾收集器无法提供更多内存。

    OutOfMemoryError 通常意味着你做错了什么,要么持有对象太久,要么试图一次处理太多数据。有时,它表示您无法控制的问题,例如缓存字符串的第三方库,或部署后未清理的应用程序服务器。有时,它与堆上的对象无关。

    要查找原因,异常文本的末尾包含详细消息。让我们检查所有错误。

    1. 错误 1 ​​– Java 堆空间:此错误是由于 过度使用终结器的应用程序。
    2. 错误 2 – 超出 GC 开销限制:此错误表明 垃圾收集器一直在运行,Java 程序正在生成 进展非常缓慢。
    3. 错误 3 – Permgen 空间被抛出:java.lang.OutOfMemoryError: PermGen 空间错误表示永久代的区域 内存已耗尽。
    4. 错误 4 – 元空间:Java 类元数据在本机中分配 记忆。如果类元数据的元空间已用尽,则 带有详细 MetaSpace 的 java.lang.OutOfMemoryError 异常是 扔了。
    5. 错误 5 – 请求的阵列大小超过 VM 限制:此错误 表示应用程序试图分配一个数组 大于堆大小。
    6. 错误 6 – 请求大小字节的原因。交换空间不足? : 这 当从本机堆分配时发生明显异常 失败并且本机堆可能接近耗尽。错误 指示失败请求的大小(以字节为单位)和 内存请求的原因。通常原因是名称 源模块报告分配失败,虽然有时 这是真正的原因。
    7. 错误 7:原因 stack_trace_with_native_method:每当这个 然后抛出错误消息(原因 stack_trace_with_native_method) 打印堆栈跟踪,其中顶部框架是本机方法, 那么这表明本机方法遇到了 分配失败。这个和以前的区别 消息是在 Java Native 中检测到分配失败 接口 (JNI) 或本机方法,而不是在 JVM 代码中。

    更多详情Understand the OutOfMemoryError 和参考答案ref.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2021-07-05
      • 2019-10-07
      相关资源
      最近更新 更多