【问题标题】:How to determine where OutOfMemory occurred on android? [duplicate]如何确定在 android 上发生 OutOfMemory 的位置? [复制]
【发布时间】:2017-09-25 15:52:12
【问题描述】:

我在我的应用程序中收到OutOfMemoryError

FATAL EXCEPTION: Thread-11746
Process: kr.co.iosystem.blackeyeonandroid, PID: 1618
java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:1063)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1337)
at com.android.okhttp.ConnectionPool.addConnection(ConnectionPool.java:208)
at com.android.okhttp.ConnectionPool.recycle(ConnectionPool.java:198)
at com.android.okhttp.OkHttpClient$1.recycle(OkHttpClient.java:111)
at com.android.okhttp.internal.http.HttpConnection$AbstractSource.endOfInput(HttpConnection.java:377)
at com.android.okhttp.internal.http.HttpConnection$FixedLengthSource.read(HttpConnection.java:426)
at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:349)
at java.io.InputStreamReader.read(InputStreamReader.java:233)
at java.io.BufferedReader.fillBuf(BufferedReader.java:145)
at java.io.BufferedReader.readLine(BufferedReader.java:397)
at com.github.nkzawa.engineio.client.transports.PollingXHR$Request.onLoad(PollingXHR.java:292)
at com.github.nkzawa.engineio.client.transports.PollingXHR$Request.access$600(PollingXHR.java:135)
at com.github.nkzawa.engineio.client.transports.PollingXHR$Request$1.run(PollingXHR.java:214)
at java.lang.Thread.run(Thread.java:818)

我检查了我的日志,但我不知道我的源中发生内存不足的位置。

如何解决内存不足的问题?

【问题讨论】:

标签: java android out-of-memory


【解决方案1】:

您必须找到您正在执行内存密集型任务的位置。您还必须避免内存泄漏。 您可以使用库来跟踪内存泄漏。 https://github.com/square/leakcanary

【讨论】:

    【解决方案2】:

    在您的清单应用程序部分添加以下内容

           android:largeHeap="true"> 
    

    这是你必须找出真正原因并解决的临时解决方案

    【讨论】:

    【解决方案3】:

    使用 android:largeHeap="true" 来解决这个问题

    在尝试加载图像之前,请检查图像大小是否小于可用内存。因此,处理 OutOfMemoryException 最有效的方法是构建应用程序,使其永远不会尝试将大量数据加载到内存中以避免异常。

    【讨论】:

    • 我认为allowBackup 在这里没有帮助,largeHeap 也没有。尽管我同意这样一个事实,即您需要拥有一个不会同时使用太多资源的良好架构。此外,您应该尝试实现应用程序无泄漏,因为根据我的经验,这些导致了大多数崩溃。
    • @Geeta Gupta 我知道android:allowBackup="true" 设置了自动备份选项。为什么你设置allowBackup manifest my source?
    • android:allowBackup="true" 点错了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2016-02-14
    • 1970-01-01
    • 2011-01-15
    • 2011-06-27
    相关资源
    最近更新 更多