【发布时间】:2016-01-26 02:12:27
【问题描述】:
我正在用java编写一个代码,其中一个整数类型变量m从用户那里接收它的值,这个值被用来(指数地)分配内存给一个数组。
例如:
int m=29;
int [] c = new int [(int)pow(2,m)];
我的问题是 如何在实际分配发生之前检查是否可以根据上述代码分配内存并向用户抛出异常,以防由于
java.lang.OutOfMemoryError: Java heap space
或由于
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
另外我想知道如何克服程序内内存需求呈指数变化(例如 2^m)的内存限制。
【问题讨论】:
-
把它包在 try/catch 中?
-
提前计算必要的空间并与可用内存进行比较...
-
除了 try/catch 之外的任何其他选项
标签: java arrays memory out-of-memory