Out of memory error in eclipse.why?

前端 未结 5 1499
花落未央
花落未央 2020-12-24 12:46

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 reason please t

5条回答
  •  眼角桃花
    2020-12-24 13:12

    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.

提交回复
热议问题