0

由于这个问题,我刚刚将 OrientDB 从2.1.19升级到2.2-rc1

回顾一下,我正在嵌入式运行 OrientDB,plocal并且正在使用以下设置启动应用程序(仅包括相关设置):

java -d64 -Xmx2G -Dstorage.diskCache.bufferSize=10000 -server -XX:+AggressiveOpts -XX:CompileThreshold=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_PATH}/heapdump.hprof -jar app start

应用程序启动,最初一切正常。但是过了一会儿,我收到以下错误:

Caused by: java.lang.NullPointerException: null
        at com.orientechnologies.common.directmemory.OByteBufferPool.acquireDirect(OByteBufferPool.java:269)
        at com.orientechnologies.orient.core.storage.cache.local.OWOWCache.cacheFileContent(OWOWCache.java:1206)
        at com.orientechnologies.orient.core.storage.cache.local.OWOWCache.load(OWOWCache.java:617)
        at com.orientechnologies.orient.core.storage.cache.local.twoq.O2QCache.updateCache(O2QCache.java:1224)
        at com.orientechnologies.orient.core.storage.cache.local.twoq.O2QCache.doLoad(O2QCache.java:447)
        at com.orientechnologies.orient.core.storage.cache.local.twoq.O2QCache.load(O2QCache.java:392)
        at com.orientechnologies.orient.core.storage.impl.local.paginated.base.ODurableComponent.loadPage(ODurableComponent.java:150)
        at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.readRecordNoLock(OPaginatedCluster.java:649) 
        at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.readRecord(OPaginatedCluster.java:622)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.doReadRecord(OAbstractPaginatedStorage.java:3163)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:2805)
        at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.readRecord(OAbstractPaginatedStorage.java:1023)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx$SimpleRecordReader.readRecord(ODatabaseDocumentTx.java:3168)
        at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeReadRecord(ODatabaseDocumentTx.java:1824)

一旦发生错误,一些查询就会停止工作。我猜这个错误是由于缺乏本机内存造成的。有没有人知道具体是什么导致了这种情况以及如何防止它。如果需要,我可以分配更多内存。我只是不确定要分配的内存类型

4

1 回答 1

0

它缺少这个新设置:

-XX:MaxDirectMemorySize=512g 

请在升级前查看 v2.2 中的所有更改:http ://orientdb.com/docs/last/Release-2.2.0.html#release-22x 。

于 2016-05-09T08:08:44.197 回答