楼主: mjzx2010
5652 6

[问答] matlab内存设置问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

67%

还不是VIP/贵宾

-

威望
0
论坛币
40 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
686 点
帖子
16
精华
0
在线时间
27 小时
注册时间
2009-1-12
最后登录
2021-4-2

2论坛币
求助:本人的系统为 win7(32bit)+matlab2012b+物理内存4G (32bit系统识别了3.25G)
问题是:matlab运行时,我想分配700*500000的数组,总是显示内存溢出
  请高手指教,如何在matlab2012b中设置:我才能分配使用这样大的数组?

关键词:MATLAB matla atlab Atl Lab matlab
沙发
lowbrow 发表于 2016-2-13 20:47:58 |只看作者 |坛友微信交流群
700*500000约为350M,Matlab中数据用的是双精度,一个数据至少要占8个字节,如此一来,光这个数组就要占用2.8G。解决的办法是换64位机器,加大内存,加SSD,在此基础上加系统的虚拟内存。另外再试试稀疏矩阵可不可以。

使用道具

藤椅
mjzx2010 发表于 2016-2-13 22:03:41 |只看作者 |坛友微信交流群
lowbrow 发表于 2016-2-13 20:47
700*500000约为350M,Matlab中数据用的是双精度,一个数据至少要占8个字节,如此一来,光这个数组就要占用2 ...
应该如何设置可以使用的内存大小

使用道具

板凳
lowbrow 发表于 2016-2-14 09:24:26 |只看作者 |坛友微信交流群
windows 可设置虚拟内存,但你这机器是32位的,最多4G的内存,所以不换机器能运行的可能性很小,即使能运行也估计非常慢。

使用道具

报纸
lowbrow 发表于 2016-2-14 11:37:36 |只看作者 |坛友微信交流群
刚才在我的电脑上试了一下,32位的matlab无法建立这么大的数组,但可以建立稀疏矩阵。我的电脑有10G的内存,用的32位的便携版的Matlab。
>> d=zeros(500,700000)
??? Out of memory. Type HELP MEMORY for your options.

>> d=sparse(500,700000)

d =

   All zero sparse: 500-by-700000

>>

使用道具

地板
lowbrow 发表于 2016-2-14 11:38:30 |只看作者 |坛友微信交流群
d=sparse(500,700000)

使用道具

7
matlab-007 发表于 2016-8-27 21:39:13 |只看作者 |坛友微信交流群
matlab内存溢出的解决方案(整理)
1)增加虚拟内存的方法是不可行的
2)使用PACK:PACK可以将matlab中的变量导出到磁盘中,以增加可用内存
3)减少变量的内存开销
4)64位架构:采用64位的软硬件架构
5)3GB 切换(3GB switch):由于在windows上运行matlab时,如果内存的使用超过约1.7G左右就要出现这种错误,而无论你有多大的内存也没用。幸好现在 在Windows XP上,MATLAB现在支持3GB切换(3GB switch)启动选项(boot option),配置额外的1GB的可寻址内存到每个程序上。这增加了你可以储存到MATLAB workspace中资料的总量约到2.7 GB。这相当于33亿的精度值。此新增的内存区块和MATLAB使用剩下的(内存)并不是连续的,所以你不能建立一个数组来填满此空间。
6)更有效的优化方案调整Java虚拟机可分配的内存大小
matlab java.lang.OutOfMemoryError
Java虚拟机内存不够用了.可以增加最大内存设置.

1. 查找matlab根路径.在matlab命令行中敲入:matlabroot
显示根路径,如:C:\MATLAB7

2.查看当前Java虚拟机最大堆内存, 敲入:java.lang.Runtime.getRuntime.maxMemory

3.查看Java虚拟机版本.敲入:version -java

4.在 $MATLAB\bin\$ARCH 路径下新建java.opts文件.
$MATLAB是根路径,例如C:\MATLAB7
$ARCH是系统架构.例如win32,则在C:\MATLAB7\bin\win32下新建java.opts文件.

5.用记事本打开java.opts文件,
对于不同的版本的Java虚拟机,输入:
The following table shows the default settings MATLAB uses for versions of the JVM:

JVM       Initial Heap Size     Max Heap Size
1.6.0     -Xms64m               -Xmx128m (32-bit)
                                             -Xmx196m (64-bit)
1.5.0     -Xms64m               -Xmx96m   (32-bit)
                                             -Xmx128m (64-bit)
1.4.2     -Xms16m               -Xmx96m
1.3.1     -Xms16000000         -Xmx64000000
1.2.2     -Xms16000000         -Xmx64000000
1.1.8     -ms16000000           -mx64000000

例如我的Java是1.4.2,在java.opts文件写入-Xmx96m,保存就ok啦
如果输入错误就报错:warning : Failed to start to Java Virtual machine

6. 重启matlab,敲入java.lang.Runtime.getRuntime.maxMemory
显示最大内存改变,设置成功.

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-15 18:54