开发者

Out of memory error in eclipse.why?

开发者 https://www.devze.com 2023-03-23 05:29 出处:网络
When i create a new project in \"Eclipse\" IDE.Suddenly it shows an alert message \"Out of memory error\".I cannot identify the reason.

When i create a new project in "Eclipse" IDE.Suddenly it shows an alert message "Out of memory error".I cannot identify the reason. If any one know the r开发者_如何转开发eason please tell me.


Try to start eclipse with follow paramenters:

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

Or justify these parameters for your requirements


  1. Go to your Eclipse setup folder
  2. If you are running Eclipse on Mac OS X then

    Right click on eclipse.app icon

    Click on Show Package Contents

  3. Open eclipse.ini file

  4. Change below parameters

    -Xms512m
    -Xmx3000m (Hoping your developer box has >4GB of memory)
    
  5. Add below parameters

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


The most obvious explanation is that you are truly out of memory. In which case starting Eclipse with a bigger heap should help

 -vmargs -Xmx256M

varying the 256M to see what works for you.

I would not expect to see this problem if you have just a few simple projects. If you are using additional plugins then conceivably the amount of heap you need may need to be increased.


Not sure if relevant to your problem, but I just had a similar problem with a Swing project using OpenJDK 7.

After several cycles of starting (the Run button) and closing ('X' / Alt+F4) my application, I got this error in the console:

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)

And sometimes, I got another sort of error:

Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread

and then, if I tried to run it once more, Java crashed:

#
# 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 revealed the cause of the problem (notice virtual memory usage):

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   

These were all instances of my application, which had not been closed. Still not sure why so much virtual memory was allocated per instance - probably there's some option for that. (I have 3GiB of physical memory, by the way).

Here's my main() method:

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

I saw the commented line in a tutorial and specifically disabled it to see what would happen. What happened was that that it defaulted to HIDE_ON_CLOSE, which did not close and dispose of the frame.

Setting setDefaultCloseOperation to EXIT_ON_CLOSE was the solution for me. Interested to see input from more knowledgeable people on this, though.


  • Open Your eclipse.ini file
  • XXMaxPermSize will be 256m.
  • Change the value to 512m.
  • Restart your eclipse.
  • Now you will not see any memory issues in Eclipse.

In Brief See below:

Before

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m

After:

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m


For everyone (like me) who ends up at the bottom without fixing it...

My Eclipse ran out of memeory every time I tried to save a specific file.

Eclipse has a bug where it is unable to handle formatting a comment between a method type and a method name, like the code given below. The fix is to move the comment up or down

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


You have to use setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

You can see from here

0

精彩评论

暂无评论...
验证码 换一张
取 消