Я только модернизировал OrientDB от 2.1.19 в 2,2-rc1 в результате this issue.OrientDB OByteBufferPool Ошибка
Как резюмировать, я бег 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)
После возникновения ошибки некоторых запросов перестает работать. Я предполагаю, что ошибка возникает из-за нехватки собственной памяти. Кто-нибудь имеет представление о том, что конкретно вызывает это и как его предотвратить. При необходимости я могу выделить больше памяти. Я просто не уверен типа памяти для выделения.
Привет, Лука, вам не кажется, что 512 г немного? Я запускаю тесты со встроенными orientdb, и maven не может запустить разветвленную VM с MaxDirectMemorySize = 512g. –
'-XX: MaxDirectMemorySize = 512g' - это только верхний предел и с 64-битным JVM это никогда не проблема. Если вы используете 32-битную JVM, попробуйте установить ее на 2G – Lvca