当我在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时也收到此消息。我附上了错误消息屏幕截图。
导致此问题的原因是什么?
" 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解决了这个问题。
答案 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
一旦你打开你的日食,你可以尝试下面的
看起来您的应用程序消耗的内存多于分配的内存(默认值)。我会尝试两件事
正如Harmlezz所建议的那样,将你对JVM的内存分配增加到-Xms2g -Xmx2g(如果需要的话,增加它并试一试)
下载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用法,例如正在运行的进程数以及堆分配情况。有很多方法可以做到这一点,例如
答案 8 :(得分:0)
我知道有关Eclipse的问题,但是Intellij我也遇到了类似的问题,而且解决方案也很简单。只需运行64位exe而不是32位的exe(始终是默认的exe)。
答案 9 :(得分:0)
就我而言,是C:驱动器空间不足。确保您有足够的可用空间。
答案 10 :(得分:0)
就我而言,我手动将 Windows 虚拟内存设置得太低,无法节省系统 SSD 中的空间。
答案 11 :(得分:0)
修复起来很简单,我不知道为什么没有人提到实际可行的解决方案。
首先,确保无线热点已关闭。最重要的是,在构建项目时,热点不能打开。
这样做,稍后感谢我?
其次,将环境变量设置到您的系统中,然后禁用防火墙或 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