繁体   English   中英

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

[英]Insufficient memory for the Java Runtime Environment in Eclipse

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服务器。 我尝试了一些步骤,但找不到正确的解决方案。

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

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

正是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. OS可能已用完虚拟地址空间或可映射的虚拟内存。 前者不太可能。 后者通常是由于您的操作系统没有足够的RAM和/或交换空间而出现的。 如果您在虚拟机上运行的内存不足,那么... ...也可能发生这种情况。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM