使用matlab時出現Out of memory問題的解決

在使用Libsvm訓練數據時,出現以下問題:

Error using svmtrain

Out of memory. Type HELP MEMORY for your options.

Error in classify (line 49)

    model = svmtrain(trainingLbls,trainingDesc,svmParams); 

去網上找了找答案,

Matlab 中數組必須佔用連續分配的內存段,當無法爲新建的數組分配連續的內存段的時候,”Out of Memory” 就會出現。由於反覆分配和釋放數組會使可用的連續內存段減少,因此當 Matlab 剛剛啓動時其連續內存最多,此時往往可以新建非常大的數組,這一點可以用命令 feature(’memstats’)(在 7.0 版本以上)看出。如果現實的最大連續內存段很小,但實際可用內存(非連續的)仍舊很多,則表明內存中碎片太多了。此時可以考慮用 pack 命令,pack 命令的作用就是將所有內存中的數組寫入硬盤,然後重新建立這些數組,以減少內存碎片。此外,在命令行或者程序中都可以使用 clear 命令,隨時減少不必要的內存。

out of Memory問題處理方法一般如下:
1. 增加虛擬內存
2. 採用PACK
3. 條件允許的話採用64位系統
4. 採用3GB switch,增加虛擬內存
5. 優化程序,減少變量
6. 如果必有必要,不要啓動java虛擬機,採用matlab -nojvm啓動
7. 關閉Matlab Server

電腦是32位操作系統,可用最大內存爲2G,使用前兩種方法均未成功,最後換了臺64位的電腦得以解決。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章