eclipse中内存不足错误,为什么?

a11xaf1n  于 2023-01-25  发布在  Eclipse
关注(0)|答案(7)|浏览(237)

当我在“Eclipse”IDE中创建一个新项目时。突然它显示一条警告消息“内存不足错误”。我无法确定原因。如果有人知道原因,请告诉我。

dw1jzc5e

dw1jzc5e1#

尝试使用以下参数启动eclipse:

eclipse.exe -vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

或者根据您的要求证明这些参数的合理性

2ekbmq32

2ekbmq322#

1.转到Eclipse安装文件夹
1.如果您在Mac OS X上运行Eclipse,则
右键单击eclipse.app图标
点击Show Package Contents
1.打开eclipse.ini文件
1.更改以下参数

-Xms512m
-Xmx3000m (Hoping your developer box has >4GB of memory)

1.添加以下参数

-XX:PermSize=256m
-XX:MaxPermSize=512m
rur96b6h

rur96b6h3#

最明显的解释是内存确实不足,在这种情况下,使用更大的堆启动Eclipse应该会有所帮助

-vmargs -Xmx256M

改变256M,看看什么适合你。
如果你只有几个简单的项目,我不希望看到这个问题。如果你使用额外的插件,那么可以想象你需要的堆的数量可能需要增加。

yqyhoc1h

yqyhoc1h4#

不确定是否与您的问题相关,但我刚刚在使用OpenJDK 7的Swing项目中遇到了类似的问题。
在启动(Run按钮)和关闭('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揭示了问题的原因(注意虚拟内存使用情况):

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
30619 mcmlxxxv  20   0 3271m 390m  45m S   2.0 13.0   0:38.88 java
30667 mcmlxxxv  20   0 2172m  35m  12m S   0.3  1.2   0:01.00 java
30688 mcmlxxxv  20   0 2172m  35m  12m S   0.3  1.2   0:00.96 java
30710 mcmlxxxv  20   0 2172m  35m  12m S   0.0  1.2   0:00.97 java

这些都是我的应用程序的示例,它们还没有被关闭。仍然不确定为什么每个示例分配了这么多虚拟内存--可能有一些选项可以这样做。(顺便说一下,我有3GiB的物理内存)。
下面是我的main()方法:

public static void main(String[] args) {
    JFrame frame = new JFrame();
    //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}

我在一个教程中看到了注解行,特意禁用了它,看看会发生什么,发生的是它默认为HIDE_ON_CLOSE,没有关闭和处理框架。
setDefaultCloseOperation设置为EXIT_ON_CLOSE对我来说是一个解决方案,但我很想看到更多知识渊博的人对此的投入。

6tqwzwtp

6tqwzwtp5#

  • 打开eclipse.ini文件
  • XXMaxPermSize将为256米。
  • 将该值更改为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
oiopk7p5

oiopk7p56#

对于每一个(像我一样)最终在底部没有修复它的人...
每次我试图保存一个特定的文件时,我的Eclipse内存就用完了。
Eclipse有一个bug,它无法处理方法类型和方法名称之间注解的格式,如下面给出的代码。

public String 
  // Never put a comment here, Eclipse will run out of memory
  getName() {
   return "name";
  }
fv2wmkja

fv2wmkja7#

必须使用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
You can see from here

相关问题