无法为对象堆预留足够的空间

我正在写一个Lucene的包装器。 当频繁发出搜索请求时,可能会出现“无法为对象堆预留足够的空间”。 我如何获得对象堆的大小​​? 我该如何解决这个问题?


我相信底层问题与SO问题的良好答案中描述的相同无法为对象堆预留足够的空间。

也就是说,JVM试图向OS询问堆的内存,而操作系统拒绝,因为它已经将所有虚拟内存分配给其他进程。

我期望在频繁启动索引器时发生这种情况,因为:

  • 它正在增加系统的平均负载(运行/等待运行的进程的数量),因此
  • 它正在增加系统的平均承诺虚拟内存资源,因此
  • 当新的JVM开始运行索引器时,它使得操作系统更可能说“不”。
  • 当然,这在很大程度上是猜想......


    你能为这个做什么?

  • 增加用于分页的光盘文件或分区的大小。
  • 为机器添加更多物理内存。
  • 较少运行索引器和/或系统不忙时。
  • 修剪索引器堆的大小。
  • 将一些其他负载移到另一台机器上。
  • 其中一些需要谨慎处理,因为它们可能会以各种方式影响整个系统的性能。

    (顺便说一句,我认为切换到64位操作系统不一定会有所帮助,而运行64位JVM肯定无济于事......)

    链接地址: http://www.djcxy.com/p/82919.html

    上一篇: Could not reserve enough space for object heap

    下一篇: Unable to start Weblogic 10.3