2014-07-08 70 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命令放在代码中的某处。可能会有帮助。