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

Eclipse中Java运行时环境的内存不足,java,jvm,malloc,heap-memory,Java,Jvm,Malloc,Heap Memory,针对上述问题,我正在尝试启动jboss服务器。我尝试了一些步骤,但找不到正确的解决方案 您可以尝试增加eclipse内存,您可以在le eclipse.ini文件(靠近eclipse可执行文件)或命令行参数中这样做: -Xms256m -Xmx16348m您可以尝试增加eclipse内存,您可以在le eclipse.ini文件(靠近eclipse可执行文件)或命令行参数中执行此操作: -Xms256m -Xmx16348m请使用以下设置为永久位置分配内存-Xms1024m-Xmx1024m-X

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

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

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

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

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

需要注意的第二件事是,本机分配请求中的空间不足,因此增加常规堆的大小没有帮助。像下面这样的选项可能不会有帮助!(事实上,它们可能会让事情变得更糟。)

需要注意的第三件事是,JVM没有PermGen空间,因此通过

 -Xms1024m -Xmx1024m -XX:-UseGCOverheadLimit
这是徒劳的。(这就是
javahotspot(TM)64位服务器虚拟机警告:忽略选项MaxPermSize=256m;8.0中删除了对它的支持。)

那么,真正的问题是什么

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

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

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

  • 操作系统可能已耗尽虚拟地址空间或可映射虚拟内存。前者不太可能。后者通常是因为操作系统没有足够的RAM和/或交换空间。当您在一个虚拟机中运行时也可能发生这种情况,该虚拟机是。。。内存资源不足

  • 现在看来,当JVM试图增长Java堆时,可能会发生这种情况。但不管怎样,问题不在于Java堆的大小。

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

    需要注意的第二件事是,本机分配请求中的空间不足,因此增加常规堆的大小没有帮助。像下面这样的选项可能不会有帮助!(事实上,它们可能会让事情变得更糟。)

    需要注意的第三件事是,JVM没有PermGen空间,因此通过

     -Xms1024m -Xmx1024m -XX:-UseGCOverheadLimit
    
    这是徒劳的。(这就是
    javahotspot(TM)64位服务器虚拟机警告:忽略选项MaxPermSize=256m;8.0中删除了对它的支持。)

    那么,真正的问题是什么

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

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

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

  • 操作系统可能已耗尽虚拟地址空间或可映射虚拟内存。前者不太可能。后者通常是因为操作系统没有足够的RAM和/或交换空间。当您在一个虚拟机中运行时也可能发生这种情况,该虚拟机是。。。内存资源不足


  • 现在看来,当JVM试图增长Java堆时,可能会发生这种情况。但无论如何,问题不在于Java堆的大小。

    “我尝试了一些步骤”是一个毫无意义的信息。告诉我们你尝试了什么,否则人们可能会很快推荐你已经厌倦的东西!除此之外:尝试将错误消息放入搜索引擎。有相当多的资源给出了与您刚刚接受的答案完全相同的答案……“我尝试了一些步骤”是一个相当无意义的信息。告诉我们你尝试了什么,否则人们可能会很快推荐你已经厌倦的东西!除此之外:尝试将错误消息放入搜索引擎。有相当多的资源给出了与您刚刚接受的答案完全相同的答案……当问题中发布的日志清楚地表明这是Java 8时,指定
    -XX:PermSize=512m-XX:MaxPermSize=512m
    是没有意义的,这些选项不受支持且被忽略。此外,这里没有明确的理由指定
    -XX:-UsegCoveredLimit
    。当问题中发布的日志明确指出这是Java 8,并且这些选项不受支持且被忽略时,指定
    -XX:PermSize=512m-XX:MaxPermSize=512m
    是没有意义的。此外,没有可识别的理由在此处指定
    -XX:-usegcoveredlimit
     -XX:PermSize=512m -XX:MaxPermSize=512m