При загрузке отчета о сбоях произошел сбой из-за java.lang.OutOfMemoryError

У меня есть отчет о сбое в консоли 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 libs: 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

Я не знаю, как воспроизвести этот сбой, поэтому не знаю, как исправить это сам. Какие-нибудь советы по устранению такого сбоя?


person Happy Mahyadi    schedule 26.07.2019    source источник


Ответы (1)


эта ошибка отображается в то время, когда вы делаете что-то неправильно или из-за неправильного программирования.

Обычно эта ошибка возникает, когда виртуальная машина Java не может выделить объект, потому что ему не хватает памяти, и сборщик мусора не может сделать больше доступной памяти.

OutOfMemoryError обычно означает, что вы делаете что-то неправильно, либо слишком долго удерживаете объекты, либо пытаетесь обработать слишком много данных за раз. Иногда это указывает на проблему, которая находится вне вашего контроля, например на стороннюю библиотеку, которая кэширует строки, или сервер приложений, который не очищается после развертывания. А иногда это не имеет ничего общего с объектами в куче.

Чтобы найти причину, текст исключения включает подробное сообщение в конце. Давайте рассмотрим все ошибки.

  1. Ошибка 1 - пространство кучи Java: эта ошибка возникает из-за приложений, которые чрезмерно используют финализаторы.
  2. Ошибка 2 - Превышен предел накладных расходов сборщика мусора: эта ошибка указывает на то, что сборщик мусора работает все время, а программа Java работает очень медленно.
  3. Ошибка 3 - выбрано пространство Permgen: ошибка пространства java.lang.OutOfMemoryError: PermGen указывает на то, что область памяти постоянного поколения исчерпана.
  4. Ошибка 4 - метапространство: метаданные класса Java размещены в собственной памяти. Если метапространство для метаданных класса исчерпано, генерируется исключение java.lang.OutOfMemoryError с подробным MetaSpace.
  5. Ошибка 5 - запрошенный размер массива превышает предел виртуальной машины: эта ошибка указывает на то, что приложение пыталось выделить массив, размер которого превышает размер кучи.
  6. Ошибка 6 - Размер запроса в байтах по причине. Нет места для подкачки? : Это очевидное исключение возникает, когда выделение из собственной кучи не удалось, и собственная куча может быть близка к исчерпанию. Ошибка указывает размер (в байтах) неудавшегося запроса и причину запроса памяти. Обычно причина - это имя исходного модуля, сообщающего об ошибке выделения, хотя иногда это и есть настоящая причина.
  7. Ошибка 7: причина stack_trace_with_native_method: всякий раз, когда выдается это сообщение об ошибке (причина stack_trace_with_native_method), печатается трассировка стека, в которой верхний фрейм является собственным методом, тогда это указывает на то, что собственный метод обнаружил сбой выделения. Разница между этим и предыдущим сообщением заключается в том, что сбой выделения был обнаружен в собственном интерфейсе Java (JNI) или собственном методе, а не в коде JVM.

для получения дополнительных сведений ознакомьтесь с ошибкой OutOfMemoryError и обратитесь к ответа исх.

person Istiaque Hossain    schedule 26.07.2019