Matlab数据库资源管理器:使用游标/获取时出错(第363行)发生Java异常:Java.lang.OutOfMemoryError:Java堆空间

Matlab数据库资源管理器:使用游标/获取时出错(第363行)发生Java异常:Java.lang.OutOfMemoryError:Java堆空间,matlab,jdbc,Matlab,Jdbc,我使用DatabaseExplorer包生成以下代码 function r = physicians() %Set preferences with setdbprefs. setdbprefs('DataReturnFormat', 'cellarray'); setdbprefs('NullNumberRead', 'NaN'); setdbprefs('NullStringRead', 'null'); %Make connection to database. Note that

我使用DatabaseExplorer包生成以下代码

function r = physicians()

%Set preferences with setdbprefs.
setdbprefs('DataReturnFormat', 'cellarray');
setdbprefs('NullNumberRead', 'NaN');
setdbprefs('NullStringRead', 'null');


%Make connection to database.  Note that the password has been omitted.
%Using JDBC driver.
conn = database('censored', 'censored', '', 'Vendor', 'ORACLE', 'Server', 'cesnored', 'PortNumber', censored, 'DriverType', 'thin');

%Read data from database.
curs = exec(conn, ['SELECT  RECIPIENT.RECIPIENT_ID'...
    ' , RECIPIENT.FNAME'...
    ' , RECIPIENT.LNAME'...
    ' , RECIPIENT.LANGUAGE'...
    ' , RECIPIENT.PHONE'...
    ' , RECIPIENT.FAX'...
    ' , RECIPIENT.CITY'...
    ' , RECIPIENT.POSTAL_CODE'...
    ' FROM  "STI".RECIPIENT ']);

curs = fetch(curs);
close(curs);

%Assign data to output variable
r = curs.Data;

%Close database connection.
close(conn);

%Clear variables
clear curs conn
我得到以下错误:

Error using cursor/fetch (line 363)
Java exception occurred:
java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOf(Unknown Source)

at java.util.Vector.grow(Unknown Source)

at java.util.Vector.ensureCapacityHelper(Unknown Source)

at java.util.Vector.addElement(Unknown Source)

at com.mathworks.toolbox.database.fetchTheData.dataFetch(fetchTheData.java:763)


Error in physicians (line 24)
curs = fetch(curs);

但是,当我直接使用该工具导入时,不会出现这样的错误。我猜我需要限制RAM的使用量,但我真的不知道如何使用。

标题中的错误消息与您的问题中的错误消息不匹配,正确的消息是什么?哦。帖子里的那个是对的。我忘了调整标题。更正了,谢谢你指出。你可以尝试增加堆大小,用
doc
命令打开文档,搜索“Java堆内存首选项”(使用本地版本为你的Matlab版本获取正确信息),有没有办法绕过堆大小限制?我可以成批做事情吗?为什么在脚本中这会失败,但在我按下按钮时会起作用?