matlab内存溢出的解决方案
(1) 增加虛擬內(nèi)存:cmd -> taskmgr 打開(kāi)任務(wù)管理器,查看物理內(nèi)存和虛擬內(nèi)存,可觀察matlab在運(yùn)行過(guò)程中是否超過(guò)物理內(nèi)存和虛擬內(nèi)存。若超過(guò),增加虛擬內(nèi)存的方法是不可行的。物理內(nèi)存不足的時(shí)候可以通過(guò)將電腦的虛擬內(nèi)存設(shè)置得大一點(diǎn),可一定程度上緩解內(nèi)存不足的壓力,但緩解是非常有限,核心還是增加物理內(nèi)存。
查看虛擬內(nèi)存方法:
(1a)右擊“我的電腦”–屬性–高級(jí)系統(tǒng)設(shè)置—-系統(tǒng)屬性—–高級(jí)—-在性能框內(nèi)點(diǎn)“設(shè)置”
(1b)性能選項(xiàng)對(duì)話框,點(diǎn)第二個(gè)標(biāo)簽“高級(jí)”
(1c)頁(yè)面文件大小后面的數(shù)字就是虛擬內(nèi)存。
(1d)若分頁(yè)文件大小0,表示沒(méi)有設(shè)置虛擬內(nèi)存
增加虛擬內(nèi)存方法
重復(fù)(1a)->(1d),
(1e)點(diǎn)擊性能選項(xiàng)-高級(jí)-更改,取消選定的虛擬內(nèi)存頁(yè)面頂部的復(fù)選框,然后點(diǎn)擊系統(tǒng)所在的驅(qū)動(dòng)器,接著點(diǎn)擊自定義大小,可在空白框中輸入你索要設(shè)置的虛擬內(nèi)存的大小即可。
(2)使用PACK:PACK可以將matlab中的變量導(dǎo)出到磁盤(pán)中,以增加可用內(nèi)存。
如何使用PACK:
當(dāng)內(nèi)存被分為很多碎片以后,其實(shí)本身可能有很大的空間,只是沒(méi)有作構(gòu)的連續(xù)空間即大的Block而已。如果此時(shí)Out of Memory,此時(shí)使用pack命令可以很好的解決此問(wèn)題。
help文件 用法:
pack
pack filename
pack(‘filename’)
pack可以為用戶(hù)整理內(nèi)存的機(jī)制在于,pack函數(shù)重新整理MATLAB工作空間中駐留的變量,將原來(lái)斷斷續(xù)續(xù)的內(nèi)存整理的連續(xù)起來(lái),這樣原來(lái)斷斷續(xù)續(xù)的內(nèi)存可能不足以存儲(chǔ)大的矩陣,而整理之后,可以很顯著的提高內(nèi)存的使用效率,最后重新分配的空間將是連續(xù)的,避免掉原來(lái)斷斷續(xù)續(xù)的內(nèi)存使用。整理步驟:
(1)將base空間以及全局變量保存到一個(gè)mat文件
(2)清空工作空間中的所有資源
(3)重新載入mat文件中保存的base空間變量和全局變量,然后刪掉mat文件
備注: pack不能提高M(jìn)ATLAB所擁有的虛擬內(nèi)存數(shù)量,如果想要增加這個(gè)數(shù)量,也就是使MATLAB單獨(dú)變量的最大size或者同時(shí)存在的變量所占有的最大空間增大,需要提高系統(tǒng)的虛擬內(nèi)存。
Change the current folder to one that is writable, run pack, and return to the previous folder.
cwd = pwd; cd(tempdir); pack cd(cwd) feature('memstats') % 查看matlab內(nèi)存使用情況(3) 打開(kāi)計(jì)算機(jī)的3GB開(kāi)關(guān)(64位的WIN7不用調(diào))。
3GB切換(3GB switch):由于在windows上運(yùn)行matlab時(shí),如果內(nèi)存的使用超過(guò)約1.7G左右就要出現(xiàn)這種錯(cuò)誤,而無(wú)論你有多大的內(nèi)存也沒(méi)用。MATLAB現(xiàn)在支持3GB切換(3GB switch)啟動(dòng)選項(xiàng)(boot option),配置額外的1GB的可尋址內(nèi)存到每個(gè)程序上。這增加了你可以?xún)?chǔ)存到MATLAB workspace中資料的總量約到2.7 GB。這相當(dāng)于33億的精度值。此新增的內(nèi)存區(qū)塊和MATLAB使用剩下的(內(nèi)存)并不是連續(xù)的,所以你不能建立一個(gè)數(shù)組來(lái)填滿(mǎn)此空間。
具體做法:修改C:\ Boot.ini文件如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS = “Microsoft Windows XP Professional”
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=”Microsoft Windows XP Professional” /3GB
注意后面的/3GB就是后加上的。重新啟動(dòng)系統(tǒng)再次運(yùn)行matlab。
打開(kāi)3GB的目的:32位系統(tǒng)(包括XP和32位的win7),默認(rèn)情況下不允許某個(gè)程序調(diào)用超過(guò)2G的內(nèi)存,一旦超過(guò),就自動(dòng)結(jié)束掉該程序。因此打開(kāi)3GB,就是為了允許大型程序,比如3DMAX,調(diào)用最多3G的內(nèi)存
matlab java.lang.OutOfMemoryError
Java虛擬機(jī)內(nèi)存不夠用了.可以增加最大內(nèi)存設(shè)置.
顯示根路徑,如:D:\CMWang\MATLABR2014b
2.查看當(dāng)前Java虛擬機(jī)最大堆內(nèi)存, 敲入:
java.lang.Runtime.getRuntime.maxMemory3.查看Java虛擬機(jī)版本.敲入:
version -java4.在 $MATLAB\bin\$ARCH 路徑下新建java.opts文件.
MATLAB是根路徑,例如D:\CMWang\MATLABR2014bARCH是系統(tǒng)架構(gòu).例如win64,則在D:\CMWang\MATLABR2014b\bin\win64下新建java.opts文件.
5.用記事本打開(kāi)java.opts文件,對(duì)于不同的版本的Java虛擬機(jī),輸入:
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文件寫(xiě)入-Xmx96m,保存就ok啦
如果輸入錯(cuò)誤就報(bào)錯(cuò):warning : Failed to start to Java Virtual machine
6. 重啟matlab,敲入
顯示最大內(nèi)存改變,設(shè)置成功.
備注: 可在matlab->file->preference->General->Java Heap Memory,可以設(shè)置Java Heap Memory大小,其最大可以設(shè)置的值是內(nèi)存大小的1/4。如果想用的Java Heap Memory大于內(nèi)存的1/4,無(wú)法利用Preference進(jìn)行設(shè)置。
采用上述在Matlab安裝目錄下添加java.opts的方法,可以任意設(shè)置Java Heap Memory的大小,當(dāng)設(shè)置的大小小于內(nèi)存的1/4時(shí),Preference中Java Heap Memory面板顯示的是相應(yīng)的值;當(dāng)大于內(nèi)存的1/4時(shí),面板顯示值是其最大值,但實(shí)際上使用的卻是我們?cè)趈ava.opts中設(shè)置的大小。設(shè)置Java Heap Memory面板的主要目的是防止一些人任意改變,破壞操作系統(tǒng).
主要參考:
http://cn.mathworks.com/matlabcentral/answers/92813-how-do-i-increase-the-heap-space-for-the-java-vm-in-matlab-6-0-r12-and-later-versions
http://cn.mathworks.com/matlabcentral/answers/99763-why-do-i-receive-a-java-exception-when-starting-matlab-6-5-r13-or-later
http://blog.sina.com.cn/s/blog_890c6aa30101b5fy.html
總結(jié)
以上是生活随笔為你收集整理的matlab内存溢出的解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ewebeditor后台拿shell
- 下一篇: VMware 12 与 VMware1