Вывод memory
на платформе Windows:
>> memory
Maximum possible array: 2046 MB (2.145e+009 bytes) *
Memory available for all arrays: 3226 MB (3.382e+009 bytes) **
Memory used by MATLAB: 598 MB (6.272e+008 bytes)
Physical Memory (RAM): 3561 MB (3.734e+009 bytes)
* Limited by contiguous virtual address space available.
** Limited by virtual address space available.
Вывод computer
на linux/mac:
>> [~,maxSize] = computer
maxSize =
2.814749767106550e+14 % Max. number of elements in a single array
с некоторыми хаками (найдено здесь):
>> java.lang.Runtime.getRuntime.maxMemory
ans =
188416000
>> java.lang.Runtime.getRuntime.totalMemory
ans =
65011712
>> java.lang.Runtime.getRuntime.freeMemory
ans =
57532968
Как видите, помимо ограничений памяти для каждой переменной, существуют также ограничения на общий объем памяти для всех переменных. Это не отличается для Windows или Linux.
Важно отметить, что, например, на моей машине с Windows невозможно создать две переменные по 1,7 ГБ, даже если у меня достаточно оперативной памяти, и ни одна из них не ограничена максимальным размером переменной.
Поскольку выполнение операции minus
присвоит результат равного размера новой переменной (a
в вашем случае или ans
, если ничего не присваивается), должно быть как минимум две этих огромных вещей. в памяти.
Я предполагаю, что вы столкнулись со вторым пределом общего объема памяти, доступного для всех переменных.
person
Rody Oldenhuis
schedule
16.05.2013
memory
? возможно, у вас недостаточно непрерывной памяти для матрицы результатовa
- person Shai   schedule 16.05.2013memory
, к сожалению, не работает. - person Mettbe   schedule 16.05.2013>> memory
в командном окне Matlab не дает вам никакого вывода? - person Shai   schedule 16.05.2013memory
- person Shai   schedule 16.05.2013double
переменных наsingle
- получите множитель x2 на память... - person Shai   schedule 16.05.201362*11969100*8/1e9 = 5.94 GB
. - person Rody Oldenhuis   schedule 16.05.2013