Matlab成長之路_5(解決out of memory問題)


 

  最近在用matlab處理稍大的數據時,老是出現out of memory紅色字眼,惱火死了。因為自己使用的是XP系統,物體內存只有2G。XP系統默認情況下只允許給一個進程分配最大2G的內存,所以即使是增加了系統的虛擬內存,那么在matlab下這些內存也是用不到的。其實最近碰到的倒不是內存不夠,而是有時候需要定義一個比較大的數組,而這些數組在matlab內存使用時又必須占用連續的內存,所以有時候雖然內存總量夠,不過也不能保證就一定能夠分配該數組。在matlab命令行使用了pack命令后也無濟於事(pack命令大概而已理解為是用來把一些瑣碎的內存整合在一起的)。

  最近在網上看到有使用3GB開關解決的,試了下還不錯,3GB開關功能就是打破傳統的xp最多只能為一個進程分配2GB內存的限制,也就是說現在可以擴展到一個線程3GB,當然了,這需要xp server2系統才有該功能。並且在使用該功能時必須保證系統的內存大於3GB,像我這電腦內存只有2G,就應該加入虛擬內存。反正加虛擬內存后其總量必須大於3G就ok。

  開啟3GB開關的方法如下:

  右鍵點擊我的電腦 -> 屬性 -> 高級 -> 啟動和故障恢復 -> 設置 -> 編輯。

   

  進入boot.int,將你的系統名,在該文件的最后添加下面一行代碼:

  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional with 3GB switche" /3gb

  重啟計算機(因為是添加的一行代碼,不是覆蓋最后一行代碼,所以重啟后系統會讓你選擇是正常啟動還是開啟3GB開關啟動,如果我們需要用到matlab類似東西即一個線程需要大的內存的話,就從3GB啟動,否則正常啟動即可,另外增加的那行代碼后面的/3gb也是需要的)。

  比如說沒用開啟3GB功能前,在matlab命令行輸入:feature(‘memstats’)其結果如下:

   

  雖然看起來內存很多,那是因為我剛啟動電腦,然后只打開matlab后,一旦運行程序就不夠了。這時候運行我自己設計的程序就容易出現out of memory錯誤

  啟動3GB開關后,不會出現了那個內存不夠錯誤了,一切正常,同樣使用命令feature(‘memstats’)來查詢,其結果如下:

   

  可以看到,虛擬內存那一項增加到了3GB。

 

  參考資料:

     Matlab “Out of memory”解決辦法

     http://www.mathworks.com/help/matlab/matlab_prog/resolving-out-of-memory-errors.html

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM