我是mat-lab和java的新手,所以我想列出add in while循环。我提到过吗?
操作系统:Windows 7,64位。
list=java.util.ArrayList();
for k=1:length(matrix)
list.add(int32(matrix(k)));
end
import edu.lipreading.*;
training = MainMethod;
training.list_method(list);
public void list_method(List<Integer> points){
while(true){
Sample sample = new Sample();
sample.getMatrix().add(points);}
}
当我运行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
答案 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);
希望这有帮助。