我在OrientDB v.2.1上使用console.sh进行选择。 等待几分钟后,我得到以下输出:
java.lang.OutOfMemoryError: GC overhead limit exceeded
我有6GB的RAM可用,而且我使用的是默认配置。
我试图取消注释JAVA_OPTS = -Xmx1024将值更改为4G,重新启动orientdb并再次运行查询...结果是:
Exception in thread "OrientDB WAL Flush Task (dati_scopus)"
Error: java.lang.OutOfMemoryError: Java heap space
orientdb {db=dati_scopus}> java.lang.OutOfMemoryError: Java heap space
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1855)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2068)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
如何修复以获得结果?
更新:使用版本2.2并使用默认配置
的相同故事Error: java.lang.OutOfMemoryError: GC overhead limit exceeded
答案 0 :(得分:1)
要使用OrientDB控制台解决OutOfMemoryError,请将堆最小值更改为最小值。
编辑bin / console.sh更改exec参数。例如,要使用最小5GB和最大6GB,请使用以下
exec "$JAVA" -Xms5g -Xmx6g -client $JAVA_OPTS $ORIENTDB_SETTINGS $SSL_OPTS
确保在SSL_OPTS参数中删除Xmx值(或者它将覆盖给定的普通Xmx,如果小于Xms则显示错误)