【问题标题】:java lang OutOfMemoryErrorjava lang OutOfMemoryError
【发布时间】:2015-10-21 14:18:53
【问题描述】:

我已经将一个三维数组声明为

double mat[][][] = new mat[400][400][3]; 

但是我遇到了内存错误,也许我需要增加我的堆内存。我该怎么做?

10-21 15:21:43.587 3610-3610/? E/AndroidRuntime: FATAL EXCEPTION: main
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime: Process: com.example.sulabh.phaseonimage, PID: 3610
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:  java.lang.OutOfMemoryError: Failed to allocate a 2572 byte allocation with  952 free bytes and 952B until OOM
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at java.lang.reflect.Array.createMultiArray(Native Method)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at java.lang.reflect.Array.newInstance(Array.java:335)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at com.example.sulabh.phaseonimage.MainActivity.reshape2Dcolre(MainActivity.java:743)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at com.example.sulabh.phaseonimage.MainActivity.onActivityResult(MainActivity.java:441)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.Activity.dispatchActivityResult(Activity.java:6192)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.ActivityThread.deliverResults(ActivityThread.java:3573)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3620)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.ActivityThread.access$1300(ActivityThread.java:151)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1352)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5257)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
10-21 15:21:43.587 3610-3610/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

【问题讨论】:

  • 这可能只是更大内存泄漏的症状。您的应用在正常执行下应该不会有分配2572 字节的问题。
  • 你能在 logcat 中看到任何“增长堆”行吗?
  • 首先去掉多维数组...why?,naive benchmark

标签: java android memory-management


【解决方案1】:

您可能会使用 largeHeap - 请阅读 http://developer.android.com/intl/es/training/articles/memory.htmlhttp://developer.android.com/intl/es/guide/topics/manifest/application-element.html#largeHeap - 但在这样做之前请三思而后行 - 可能还有其他选择,这应该是最后的手段

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多