gpt4 book ai didi

图形数据库内存不足错误 : Java heap space

转载 作者:行者123 更新时间:2023-12-02 00:58:16 24 4
gpt4 key购买 nike

我在研究项目中使用 GraphDb Free 8.6.1,我在总内存为 4GB 的 Linux 服务器上以默认配置运行它。

目前,我们在 tripplestore 中执行了相当多的 CRUD 操作。

GraphDB 在控制台中抛出异常:

java.lang.OutOfMemoryError: Java heap space
-XX:OnOutOfMemoryError="kill -9 %p"
Executing /bin/sh -c "kill -9 1411"...

查看进程,GraphDB 以参数 XX:MaxDirectMemorySize=128G 运行

我无法更改,即使使用 ./graph -Xmx3g,进程仍在运行 XX:MaxDirectMemorySize=128G。

我已经尝试配置 ./grapdh 参数,设置 GDB_HEAP_SIZE=3072m,现在进程使用额外的 -Xms3072m -Xmx3072m 参数运行,但仍然是 XX:MaxDirectMemorySize=128G。

更新到 GDB_HEAP_SIZE=3072m 后,存储库再次关闭,没有 .hprof 文件,无一异常(exception),日志中没有任何可疑之处。以下行已刷新到控制台:Java HotSpot(TM) 64 位服务器 VM 警告:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f5b4b6d0000, 65536, 1) failed; error='Cannot allocate memory' (errno=12)

拜托,你能帮我正确配置 GraphDB tripplestore 以消除堆空间异常吗?

谢谢。

最佳答案

默认情况下,JVM 中-XX:MaxDirectMemorySize(堆外内存)参数的值等于-XMx(堆内存)。对于非常大的存储库,堆外内存的大小可能会变得不足,因此 GraphDB 开发人员将此参数设置为 128GB 或无限制。

我怀疑您的实际问题实际上是在堆内存上分配了过多的内存,这使得 RAM 中的堆外内存没有空间。当数据库尝试分配堆外 RAM 时,您会遇到这个低操作系统级错误“无法分配内存”。

解决这个问题有两种选择:

  • 将服务器的 RAM 增加到 8GB 并保持相同的配置 - 这将允许分配 8GB RAM:2GB(操作系统)+ 3GB(堆上)+ 3GB(堆外)
  • -Xmx 值减小到 2GB,这样 4GB RAM 将被分配:1GB(操作系统)+ 2GB(堆上)+ 1GB(堆外)

要获得 GraphDB 需要多少 RAM 的近似值,请查看硬件大小页面:

http://graphdb.ontotext.com/documentation/8.6/free/requirements.html

关于图形数据库内存不足错误 : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com