Когда я создаю новый проект в среде IDE Eclipse. Неожиданно появляется предупреждающее сообщение "Ошибка вне памяти". Я не могу определить причину. Если кто-нибудь знает причину, пожалуйста, скажите мне.
Ошибка памяти в eclipse.why?
Ответ 1
Попробуйте запустить затмение с помощью следующих паразитов:
eclipse.exe -vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m
Или оправдайте эти параметры для своих требований
Ответ 2
- Перейдите в папку настройки Eclipse
-
Если вы запускаете Eclipse в Mac OS X, то
Щелкните правой кнопкой мыши значок
eclipse.app
Нажмите
Show Package Contents
-
Откройте
eclipse.ini
файл -
Изменить параметры ниже
-Xms512m -Xmx3000m (Hoping your developer box has >4GB of memory)
-
Добавьте параметры ниже
-XX:PermSize=256m -XX:MaxPermSize=512m
Ответ 3
Самое очевидное объяснение состоит в том, что вы действительно не в памяти. В этом случае запуск Eclipse с большей кучей должен помочь
-vmargs -Xmx256M
изменяя 256M, чтобы увидеть, что работает для вас.
Я бы не ожидал увидеть эту проблему, если у вас всего несколько простых проектов. Если вы используете дополнительные плагины, то, возможно, нужно увеличить количество кучи, которое вам нужно увеличить.
Ответ 4
Не уверен, если это относится к вашей проблеме, но у меня была аналогичная проблема с проектом 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 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
выявлена причина проблемы (обратите внимание на использование виртуальной памяти):
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
, который не закрывал и не удалял фрейм.
Настройка для меня была < <2 → EXIT_ON_CLOSE. Заинтересованы в том, чтобы увидеть информацию от более знающих людей об этом.
Ответ 5
- Откройте файл 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