Eclipse中Java运行时环境的内存不足

时间:2018-09-13 10:40:57

标签: java jvm malloc heap-memory

There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (malloc) failed to allocate 1048576 bytes for AllocateHeap

   # An error report file with more information is saved as:
   # C:\jboss-eap-services-6.4.4\bin\hs_err_pid6632.log
  Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; 
  support was removed in 8.0

由于上述问题,我正在尝试启动jboss服务器。我尝试了一些步骤,但找不到正确的解决方案。

3 个答案:

答案 0 :(得分:1)

您可以尝试增加eclipse的内存,可以在le eclipse.ini文件(靠近eclipse可执行文件)中或在命令行参数中进行此操作: -Xms256m -Xmx16348m

答案 1 :(得分:1)

请使用以下设置为永久位置-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit

分配内存

答案 2 :(得分:0)

崩溃的是JBoss(不是Eclipse)。因此,增加Eclipse的内存是徒劳的! (实际上,这可能会使情况变得更糟。)

要注意的第二件事是,本机分配请求中的空间不足,因此增加常规堆的大小将无济于事。如下所示的选项可能无济于事! (实际上,它们可能会使情况变得更糟。)

 -Xms1024m -Xmx1024m -XX:-UseGCOverheadLimit

要注意的第三件事是您的JVM没有PermGen空间,因此可以通过以下方式摆弄PermGen的大小

 -XX:PermSize=512m -XX:MaxPermSize=512m 

是徒劳的。 (Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0就是这个意思。)

那么真正的问题是什么?

您正在运行64位JRE,因此这不是体系结构问题。 (在32位JRE上,JVM的地址空间有硬限制...)

实际上,这是JVM本身之外的问题。基本上,JVM要求操作系统提供更多的内存,并且操作系统说“不!”。我可以提供两种可能的解释:

  1. 可能有一个按进程的“ ulimit”,这限制了进程的大小。您的JVM请求超出了该限制。

  2. 操作系统可能已用完虚拟地址空间或可映射的虚拟内存。前者不太可能。后者通常是由于您的操作系统没有足够的RAM和/或交换空间而出现的。如果您在一个虚拟机上运行,​​而该虚拟机...不足以拥有足够的内存资源,那么这种情况也可能发生。

现在看来,这可能是在JVM试图增长Java堆时发生的。但是无论哪种方式,问题都不在于Java堆的大小。