代码之家  ›  专栏  ›  技术社区  ›  Dmitrii

为什么Java试图从堆中保留最大空间

  •  1
  • Dmitrii  · 技术社区  · 7 年前

     C:\ProgramData\Oracle\Java\javapath\java.exe -Xms200M -Xmx1536M
    

    结果,Java问我没有足够的可用空间

    Error occurred during initialization of VM
    Could not reserve enough space for 1572864KB object heap
    

    但是,如果我设置,例如,-Xmx756,它工作得很好!

    那么,为什么Java不能保留内存呢?我有16GB的RAM,并且不到一半的内存在使用中。

    1 回复  |  直到 6 年前
        1
  •  3
  •   J Fabian Meier    7 年前

    您提到的“最大”内存量需要可用(即使在开始时没有保留-您可以在jvisualvm中看到)。由于某些原因,您的大部分物理内存不可用。最常见的原因是:

    您可能正在运行32位版本的Java。改用64位版本,这样可以保留更多内存。