2014-07-08 67 views
0

我在MATLAB上運行了一個腳本,它運行良好,當我想再次運行該腳本時,然後MATLAB卡在忙中!我發現在我的作品在目錄中的文件「hs_err_pid1124」它包含以下內容:Java。 lang內存不足

A fatal error has been detected by the Java Runtime Environment: 
# 
# java.lang.OutOfMemoryError: requested 16384000 bytes for GrET in 
C:\BUILD_AREA\jdk6_17\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap 
space? 
# 
# Internal Error (allocation.inline.hpp:39), pid=1124, tid=1380 
# Error: GrET in 
C:\BUILD_AREA\jdk6_17\hotspot\src\share\vm\utilities\growableArray.cpp 
# 
# JRE version: 6.0_17-b04 
# Java VM: Java HotSpot(TM) Client VM (14.3-b01 mixed mode windows-x86) 

. 
. 
. 

我的電腦內存是4G,我增加了系統的交換空間,但仍是問題沒有解決!

謝謝,

+0

上述錯誤信息並沒有真正告訴我們很多,看到你的腳本會更有幫助。另外,如果它曾經工作過一次,然後第二次失敗,則表明存在內存泄漏,或者第二次在運行腳本之前在工作區中使用了更多內存(例如:第一次執行的結果)。 – Alan

+0

好吧,我沒有在電腦上運行任何東西,只運行腳本,並且我多次在另一臺電腦上運行它,沒有任何問題。 – noor

+0

是的,它似乎內存泄漏,但如何解決它! – noor

回答

1

這裏最有可能的嫌疑是你的代碼。我希望你做一些奇怪的事情(打開一個文件,稍後再關閉它?!將每個文件讀入一個持續增長的變量?!)。

然而,如果沒有這個代碼是很難診斷。

這裏是你可以做什麼:

  1. 評估可見內存使用:將一半的地方通過一個斷點,並檢查最大的變量的大小。同時檢查總大小。 (如果錯誤是一個普通的MATLAB錯誤,你也可以使用dbstop if error
  2. 說服MATLAB來釋放內存:如果第1步得到什麼,你實際上可能會做正確的事情,但也許MATLAB不能正確管理自己的內存。這很少見,但有時會在重複簡單任務時出現很多次。在這種情況下,您可以將pack命令放在代碼中的某處。可能會有幫助。