将GraphML导入OrientDB时发生java OutOfMemoryError
我正在OrientDB中导入一个中等大小的GraphML文件(大约8GB),我不断收到以下错误:
Importing GRAPHML database from database /root/neo/out.graphml...
Error: java.lang.OutOfMemoryError: GC overhead limit exceeded
我曾尝试在本地或作为远程数据库(remote:localhost)连接到我的数据库,但没有成功。公平地说,远程连接有帮助,但还不够。我还尝试调整控制台应用程序和数据库服务器本身的堆大小(增加到2048)。这也有帮助,但还不够,我也不清楚到底是哪一个帮助了我
考虑到OrientDB本身不使用堆内存进行数据库操作,我想知道导入过程的哪个部分需要这么多堆内存。这里哪个代理(加载graphml的控制台或保存导入结果的数据库)需要更多堆内存,在这种情况下,向java堆分配内存的最佳方式是什么?最后一点:与远程连接同一台机器上的同一个本地数据库(remote:localhost)相比,在本地连接到数据库时,内存分配需求是否有所不同
# 1 楼答案
正如orientdb documentation所建议的,您可以使用
batchSize
参数来减少要处理的批处理大小。默认值为1000。所以你可以试试控制台
JAVA Api