" Java运行时环境的内存不足"日食中的消息

时间:2014-04-02 08:24:57

标签: java eclipse

当我在Eclipse中运行Java代码时,我收到以下消息:

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (malloc) failed to allocate 4088 bytes for AllocateHeap
An error report file with more information is saved as:
E:\Eclipse_Workspace\BTest\hs_err_pid1888.log

我的电脑里有4GB内存。我也将我的JRE从1.7改为1.8。但这个问题似乎没有得到解决。我使用带有i3处理器的Win 8系统,在我的C盘中有大约20GB的可用磁盘空间。

Eclipse版本:Eclipse Juno Service第2版

我在启动Eclipse时也收到此消息。我附上了错误消息屏幕截图。

导致此问题的原因是什么?

enter image description here

" eclipse.ini"中的内存参数文件:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms40m
-Xmx512m

解决: 重新安装eclipse解决了这个问题。

12 个答案:

答案 0 :(得分:41)

上面的消息表示您在PC上运行了这么多程序,没有剩余的内存可以再运行一次。这不是Java问题,没有Java选项会改变它。

使用Windows的任务管理器查看您的4GB RAM实际上有多少免费。我猜是在某个地方,你有一个程序可以吃掉所有的记忆。找到并杀死它。

编辑您需要了解有两种类型的“内存不足”错误。

第一个是OutOfMemoryException,它是在Java代码运行并且Java 不够大时得到的。这意味着Java 代码要求Java 运行时获取内存。您可以使用-Xmx...

修复这些问题

另一个错误是当Java 运行时内存不足时。这与Java堆完全无关。当Java要求操作系统获得更多内存时,这是一个错误,操作系统说:“抱歉,我没有。”

要修复后者,请关闭应用程序或重新启动(以清除内存碎片)。

答案 1 :(得分:10)

即使运行简单命令,如何诊断此错误:

java -version
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Cannot create GC thread. Out of system resources.
# An error report file with more information is saved as:
# /home2/ericlesc/code/java/c2/hs_err_pid23944.log

检查您的可用内存量:

free -m
             total       used       free     shared    buffers     cached
Mem:         28119      26643       1475        189       2391      15368
-/+ buffers/cache:       8884      19235
Swap:         5117         34       5083

检查最大用户进程数,确保没有超出限制:

ulimit -a

ps -ef | wc -l

对我来说,之所以发生这种情况,是因为PHP在bluehost上占用了太多的内存,而我能够修复它的方式,无需重启PHP或服务器(我不能)就是public_html目录并重命名。并给它一分钟让PHP看到更改,然后重命名。

php引擎本身的一个错误。我找到了一种聪明的方法来快速启动PHP引擎。

(2016年2月更新)(由于Bluehost实例PHP引擎正在保留所有内存并且没有为JVM留下任何内容,因此我获得了大量的选票。在他们的辩护中,PHP正在演变成一个邪恶的Rube Goldberg机器.Bluehost作为一项服务正在下降。

答案 2 :(得分:3)

如果您使用的是虚拟机(VM),为您的VM分配更多内存,您的问题就会得到解决。

答案 3 :(得分:2)

尝试使用下面的

修改你的eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms2G
-Xmx3G
-XX:MaxPermSize=2G
-XX:+UseCompressedOops
-XX:+UseParallelGC

一旦你打开你的日食,你可以尝试下面的

看起来您的应用程序消耗的内存多于分配的内存(默认值)。我会尝试两件事

  1. 正如Harmlezz所建议的那样,将你对JVM的内存分配增加到-Xms2g -Xmx2g(如果需要的话,增加它并试一试)

  2. 下载eclipse内存分析器并检查导致内存泄漏的原因,或者甚至可以使用JConsole查看JVM内存利用率以找出应用程序内存泄漏问题。

答案 4 :(得分:1)

Eclipse安装目录中,您应该能够找到文件eclipse.ini。打开它,找到-vmargs部分。调整值:

-Xmx1024m

在此示例中,它设置为1GB。

答案 5 :(得分:0)

您的应用程序(Eclipse)需要更多内存且JVM分配不够。您可以通过遵循here给出的答案来增加JVM分配的内存量

答案 6 :(得分:0)

如果您使用ec2并且想要进行mvn构建,那么使用-T选项告诉maven在构建时使用线程数

例如:mvn -T 10 clean package

答案 7 :(得分:0)

您需要诊断jvm用法,例如正在运行的进程数以及堆分配情况。有很多方法可以做到这一点,例如

  • 您可以使用java jcmd来检查对象的数量,内存的大小(对于Linux,您可以使用例如“/usr/jdk1.8.0_25/bin/jcmd 19628 GC.class_histogram> /tmp/19628_ClassHistogram_1.txt” ,这里19628是正在运行的应用程序进程id)。您可以轻松检查代码中是否存在任何强引用。

答案 8 :(得分:0)

我知道有关Eclipse的问题,但是Intellij我也遇到了类似的问题,而且解决方案也很简单。只需运行64位exe而不是32位的exe(始终是默认的exe)。

答案 9 :(得分:0)

就我而言,是C:驱动器空间不足。确保您有足够的可用空间。

答案 10 :(得分:0)

就我而言,我手动将 Windows 虚拟内存设置得太低,无法节省系统 SSD 中的空间。

答案 11 :(得分:0)

修复起来很简单,我不知道为什么没有人提到实际可行的解决方案。

首先,确保无线热点已关闭。最重要的是,在构建项目时,热点不能打开。

这样做,稍后感谢我?

Follow the image to set your environment variables.

其次,将环境变量设置到您的系统中,然后禁用防火墙或 Android Studio 和 Java VM 的防病毒软件。它肯定会解决您的问题。

Starting Gradle Daemon...
Gradle Daemon started in 4 s 291 ms
Starting Gradle Daemon...
Gradle Daemon started in 5 s 664 ms
Starting Gradle Daemon...
Gradle Daemon started in 2 s 210 ms
Starting Gradle Daemon...
Gradle Daemon started in 7 s 258 ms