Java eclipse中内存不足错误。为什么?
当我在“Eclipse”IDE中创建一个新项目时,它突然显示一条警告消息“内存不足错误”。我无法确定原因。Java eclipse中内存不足错误。为什么?,java,eclipse,myeclipse,Java,Eclipse,Myeclipse,当我在“Eclipse”IDE中创建一个新项目时,它突然显示一条警告消息“内存不足错误”。我无法确定原因。 如果有人知道原因,请告诉我。尝试使用以下参数启动eclipse: eclipse.exe -vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m 或者根据您的需求调整这些参数最明显的解释是,您的内存确实不足。在这种情况下,使用更大的堆启动Eclipse应该会有所帮助 -vmargs -Xmx256M 改变256
如果有人知道原因,请告诉我。尝试使用以下参数启动eclipse:
eclipse.exe -vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m
或者根据您的需求调整这些参数最明显的解释是,您的内存确实不足。在这种情况下,使用更大的堆启动Eclipse应该会有所帮助
-vmargs -Xmx256M
改变256M,看看什么适合你
如果你只有几个简单的项目,我不希望看到这个问题。如果您正在使用其他插件,那么可以想象,您需要的堆数量可能需要增加。不确定是否与您的问题相关,但我刚刚遇到了一个使用OpenJDK 7的Swing项目的类似问题 在启动(运行按钮)和关闭(
'X'
/Alt+F4
)我的应用程序的几个周期后,我在控制台中遇到了以下错误:
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:691)
at sun.awt.AWTAutoShutdown.activateBlockerThread(AWTAutoShutdown.java:334)
at sun.awt.AWTAutoShutdown.notifyPeerMapUpdated(AWTAutoShutdown.java:215)
at sun.awt.AWTAutoShutdown.registerPeer(AWTAutoShutdown.java:348)
at sun.awt.SunToolkit.targetCreatedPeer(SunToolkit.java:313)
at sun.awt.X11.XToolkit.createFrame(XToolkit.java:410)
at java.awt.Frame.addNotify(Frame.java:477)
at java.awt.Window.show(Window.java:1031)
at java.awt.Component.show(Component.java:1651)
at java.awt.Component.setVisible(Component.java:1603)
at java.awt.Window.setVisible(Window.java:1014)
at tool.BAT.main(BAT.java:11)
有时,我会犯另一种错误:
Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread
然后,如果我再次尝试运行它,Java崩溃了:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=30388, tid=139776854689536
#
# JRE version: 7.0_07-b30
# Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C 0x0000000000000000
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/mcmlxxxvi/workspace/bat/hs_err_pid30388.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
# http://icedtea.classpath.org/bugzilla
#
top
揭示了问题的原因(请注意虚拟内存使用情况):
这些都是我尚未关闭的应用程序的实例。仍然不确定为什么每个实例分配了这么多虚拟内存-可能有一些选择。(顺便说一下,我有3GiB的物理内存)
下面是我的main()方法:
我在教程中看到了注释行,并专门禁用了它,以查看会发生什么。发生的情况是,它默认设置为在关闭时隐藏
,这不会关闭和处理帧
将setDefaultCloseOperation
设置为关闭时退出是我的解决方案。不过,我有兴趣看到更多知识渊博的人在这方面的意见
Show Package Contents
eclipse.ini
文件-Xms512m
-Xmx3000m (Hoping your developer box has >4GB of memory)
-XX:PermSize=256m
-XX:MaxPermSize=512m
-Xms512m
-Xmx3000m (Hoping your developer box has >4GB of memory)
-XX:PermSize=256m
-XX:MaxPermSize=512m
- 打开eclipse.ini文件
- XXMaxPerm的尺寸为256m
- 将该值更改为512m
- 重新启动eclipse
- 现在您将不会在Eclipse中看到任何内存问题
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
之后:
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
您必须使用
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)代码>
总是吗?同样的项目?你的工作空间有多大?很多项目?你有多少内存?您应该拥有至少4GB的RAM,以使Eclipse平稳运行。如果堆设置太小,即使拥有400GB的RAM也没有帮助。有关每个参数的解释,请参阅。Eclipse 8.0中删除了PermSize和MaxPermSize支持。不确定为什么会否决这一点。我和OP有同样的问题,在启动参数中已经增加了内存。发现在打开/关闭Swing窗口后打开了许多java进程,尝试了此建议,现在它已正确关闭。在更高版本(8.0+)中似乎不支持PermSize和MaxPermSize<代码>Java热点(TM)64位服务器VM警告:忽略选项PermSize=256m;在8.0 Java HotSpot(TM)64位服务器VM中删除了支持警告:忽略选项MaxPermSize=512m;支持已在8.0中删除