2017-04-24 108 views
-3

有這麼多問題,但是我找不到解決方案,我檢查了我的不同設備,但仍然無法準確找到發生此錯誤的位置。我的應用當前正在運行並安裝在50k有源設備上,我通過我的Firebase獲得了此錯誤,並且發生了很多次。異常java.lang.OutOfMemoryError:未能分配65548字節分配,55872空閒字節和54KB,直到OOM

Exception java.lang.OutOfMemoryError: Failed to allocate a 65548 byte allocation with 55872 free bytes and 54KB until OOM 
com.android.okhttp.okio.Segment.<init> (Segment.java:62) 
com.android.okhttp.okio.SegmentPool.take (SegmentPool.java:46) 
com.android.okhttp.okio.Buffer.writableSegment (Buffer.java:1114) 
com.android.okhttp.okio.InflaterSource.read (InflaterSource.java:66) 
com.android.okhttp.okio.GzipSource.read (GzipSource.java:80) 
com.android.okhttp.okio.RealBufferedSource$1.read (RealBufferedSource.java:374) 
bmr.a (:com.google.android.gms.DynamiteModulesC:95) 
bmk.a (:com.google.android.gms.DynamiteModulesC:1055) 
bmq.a (:com.google.android.gms.DynamiteModulesC:5055) 
bmq.run (:com.google.android.gms.DynamiteModulesC:54) 
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) 
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588) 
java.lang.Thread.run (Thread.java:818) 
+1

您用完了內存。沒有辦法從堆棧中找出造成它的原因,因爲它是一個累積性問題。您需要運行應用程序並進行一些堆轉儲,查找內存泄漏。 –

+0

請粘貼你得到這個錯誤的活動的代碼 – Sonam

回答

0

看來你已經嘗試通過「okhttp」上傳文件。如果是,嘗試使用,而不是「文件」,「文件路徑」爲PARAM。

+0

我正在下載捕獲文件夾中的圖像和視頻文件,我會檢查你的解決方案,並給你答覆。 – Ahmed

+0

是的,實際上,我正在用包含位圖,文件等的接口傳輸對象。我認爲這是問題 – Ahmed

+0

我上傳asynchttp文件時曾遇到類似問題。最後,我發現如果使用File對象上傳,整個文件被緩存在byte []中,並可能導致OOM。但是,如果我使用字符串文件路徑,那麼文件將被逐個讀取。 –

0

好像你嘗試解壓縮大文件,如此之大,設備的所有內存都花在一個文件。每個設備上的可用內存不同。 如果可能,請嘗試將文件拆分爲更小的塊並分別處理它們。 Otherwize,嘗試使用流解決方案,您可以使用流解壓縮,而不必在開始解壓縮之前將整個文件加載到內存中。這裏Unzip using a stream或閱讀文檔:

試試這個GZUPInputStream

+0

我正在下載圖像和視頻文件在捕獲文件夾。 – Ahmed

相關問題