java.lang.OutOfMemoryError:使用Matlab R2013a的Java堆空间

时间:2014-03-11 02:30:17

标签: java matlab

我是mat-lab和java的新手,所以我想列出add in while循环。我提到过吗?

操作系统:Windows 7,64位。

  • 在Mat-lab Part Side

list=java.util.ArrayList();
for k=1:length(matrix)
list.add(int32(matrix(k)));
end
import edu.lipreading.*;
training = MainMethod;
training.list_method(list);

    Java类部分
  1. public void list_method(List<Integer> points){
    
       while(true){
    
         Sample sample = new Sample();
    
         sample.getMatrix().add(points);}
    
     }
    
  2. 当我运行mat-lab时,我收到错误:

    java.lang.OutOfMemoryError: Java heap space
        at java.util.Arrays.copyOf(Arrays.java:2734)
        at java.util.Vector.ensureCapacityHelper(Vector.java:226)
        at java.util.Vector.add(Vector.java:728)
        at edu.lipreading.MainMethod.onRecord(MainMethod.java:40)
        at edu.lipreading.MainMethod.list_method(MainMethod.java:26)
    

    注意:我也提到了链接:java.lang.OutOfMemoryError: Java heap space on startup

2 个答案:

答案 0 :(得分:1)

如果MATLAB中的Java堆空间不足,可以在MATLAB首选项中增加分配给它的内存量。

根据您的MATLAB版本,通过从“文件”菜单中选择“首选项”或单击工具栏中的“首选项”,打开首选项对话框。

在“常规,Java堆内存”一节下,您应找到一个控制Java堆大小的设置。默认值非常低,因此请将其增加到您认为必要的任何值。您需要重新启动MATLAB才能使该设置生效。

答案 1 :(得分:0)

你不需要无限的while循环,对于你的情况,这将有效,假设getMatrix返回一个列表对象并且你正在向它添加另一个列表。

     Sample sample = new Sample();

     sample.getMatrix().add(points);

如果你只想将list的内容添加到getMatrix()列表中,那么你可以这样做:

     sample.getMatrix().addAll(points);

希望这有帮助。