Ошибка нехватки памяти в eclipse.why?

Когда я создаю новый проект в среде IDE «Eclipse». Внезапно появляется предупреждающее сообщение «Ошибка нехватки памяти». Я не могу определить причину. Если кто-нибудь знает причину, скажите мне.


person sivakumar    schedule 25.07.2011    source источник
comment
Всегда? Такой же проект? Насколько велико ваше рабочее место? Много проектов?   -  person djna    schedule 25.07.2011
comment
сколько у тебя барана? У вас должно быть как минимум 4 ГБ ОЗУ, чтобы Eclipse работал бесперебойно.   -  person ysrb    schedule 25.07.2011
comment
Даже 400 ГБ ОЗУ не помогли бы, если бы размер кучи был слишком мал.   -  person djna    schedule 25.07.2011


Ответы (6)


Попробуйте запустить затмение со следующими параметрами:

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

Или обоснуйте эти параметры под свои требования

person alexblum    schedule 25.07.2011
comment
См. stackoverflow.com/a/101995/632951 для объяснения каждого параметра. - person Pacerier; 10.05.2014
comment
Поддержка PermSize и MaxPermSize была удалена в Eclipse 8.0. - person Dmitriy Vinokurov; 17.06.2019

  1. Перейдите в папку установки Eclipse
  2. Если вы используете Eclipse в Mac OS X, тогда

    Щелкните правой кнопкой мыши значок eclipse.app

    Нажмите Show Package Contents

  3. Открыть eclipse.ini файл

  4. Измените параметры ниже

    -Xms512m
    -Xmx3000m (Hoping your developer box has >4GB of memory)
    
  5. Добавьте ниже параметры

    -XX:PermSize=256m
    -XX:MaxPermSize=512m
    
person Iman Marashi    schedule 22.03.2016
comment
Кажется, PermSize и MaxPermSize не поддерживаются в более поздних версиях (8.0+). Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256m; support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0 - person A. B; 05.04.2018

Наиболее очевидное объяснение заключается в том, что вам действительно не хватает памяти. В этом случае запуск Eclipse с большей кучей должен помочь

 -vmargs -Xmx256M

варьируя 256M, чтобы увидеть, что работает для вас.

Я бы не ожидал увидеть эту проблему, если у вас есть всего несколько простых проектов. Если вы используете дополнительные плагины, возможно, вам может потребоваться увеличить количество кучи.

person djna    schedule 25.07.2011

Не уверен, относится ли это к вашей проблеме, но у меня была аналогичная проблема с проектом Swing с использованием OpenJDK 7.

После нескольких циклов запуска (кнопка 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. Тем не менее, интересно узнать мнение более знающих людей по этому поводу.

person mcmlxxxvi    schedule 05.10.2012
comment
Не уверен, почему это было отклонено. У меня была та же проблема, что и у OP, уже увеличив память в параметрах запуска. Обнаружил многочисленные java-процессы, открывающиеся после открытия / закрытия окна Swing, попробовал это предложение, и теперь оно закрывается правильно. - person Neil; 18.06.2014

  • Откройте ваш файл eclipse.ini
  • XXMaxPermSize будет 256 м.
  • Измените значение на 512 м.
  • Перезагрузите затмение.
  • Теперь вы не увидите никаких проблем с памятью в 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
person Nagaraj Vuyyuru    schedule 17.04.2019

Вы должны использовать setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Вы можете увидеть здесь

person Muhammed Mustafa Savar    schedule 05.04.2021