【发布时间】: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