我认为这是一个普遍的问题,但是如果它有助于我在Mac OS X 10.8上使用16GB RAM运行LucidDB数据库(0.9.4)。数据库软件主要用Java编写,部分用C ++编写。当我将缓冲池大小增加到1GB时,出现以下错误。
java(669,0xfc621000)malloc: * mmap(size = 16777216)失败(错误代码= 12) 错误:无法分配区域 * *在malloc_error_break中设置断点以进行调试
我相信缓冲池使用共享内存,因此我将最大可用共享内存(kern.sysv.shmmax,kern.sysv.shmall)增加到2GB。我还将java堆大小(Xms,Xmx)增加到1536MB。我被困了,有什么提示吗?
答案 0 :(得分:1)
每当我在linux下看到这些奇怪的低级别错误时,我都会将其追溯到缺少某种资源,例如耗尽交换或过于频繁地重新映射虚拟内存。应该有一个实用程序,它允许您在正在运行的程序中转储所有内存映射。我会检查映射的数量是否太高。