web-dev-qa-db-fra.com

Erreur de mémoire insuffisante dans Eclipse.pourquoi?

Lorsque je crée un nouveau projet dans "Eclipse" IDE. Soudain, il affiche un message d'alerte "Erreur de mémoire insuffisante". Je ne peux pas identifier la raison. Si quelqu'un connaît la raison, dites-le moi.

25
sivakumar

Essayez de démarrer Eclipse avec les paramètres suivants:

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

Ou justifiez ces paramètres pour vos besoins

23
alexblum
  1. Accédez à votre dossier de configuration Eclipse
  2. Si vous exécutez Eclipse sur Mac OS X,

    Clic droit sur Eclipse.app icône

    Cliquer sur Show Package Contents

  3. Ouvert Eclipse.ini fichier

  4. Modifier les paramètres ci-dessous

    -Xms512m
    -Xmx3000m (Hoping your developer box has >4GB of memory)
    
  5. Ajouter les paramètres ci-dessous

    -XX:PermSize=256m
    -XX:MaxPermSize=512m
    
11
Iman Marashi

L'explication la plus évidente est que vous êtes vraiment à court de mémoire. Dans ce cas, démarrer Eclipse avec un tas plus gros devrait aider

 -vmargs -Xmx256M

variant le 256M pour voir ce qui fonctionne pour vous.

Je ne m'attendrais pas à voir ce problème si vous n'avez que quelques projets simples. Si vous utilisez des plugins supplémentaires, il est possible que la quantité de tas dont vous avez besoin doive être augmentée.

3
djna
  • Ouvrez votre fichier Eclipse.ini
  • XXMaxPermSize sera de 256 m.
  • Modifiez la valeur à 512 m.
  • Redémarrez votre Eclipse.
  • Maintenant, vous ne verrez aucun problème de mémoire dans Eclipse.

En bref Voir ci-dessous:

Avant

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

Après:

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
512m
1
Nagaraj Vuyyuru

Je ne sais pas si cela est pertinent pour votre problème, mais je viens d'avoir un problème similaire avec un projet Swing utilisant OpenJDK 7.

Après plusieurs cycles de démarrage (le bouton Run) et de fermeture ('X'/Alt+F4) mon application, j'ai eu cette erreur dans la 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)

Et parfois, j'ai une autre sorte d'erreur:

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

puis, si j'ai essayé de l'exécuter une fois de plus, Java s'est écrasé:

#
# 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 a révélé la cause du problème (remarquez l'utilisation de la mémoire virtuelle):

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   

Ce sont tous des cas de ma demande, qui n'ont pas été fermés. Vous ne savez toujours pas pourquoi tant de mémoire virtuelle a été allouée par instance - il existe probablement une option pour cela. (J'ai d'ailleurs 3 Go de mémoire physique).

Voici ma méthode main ():

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

J'ai vu la ligne commentée dans un didacticiel et l'ai spécifiquement désactivée pour voir ce qui se passerait. Ce qui s'est passé, c'est qu'il est par défaut à HIDE_ON_CLOSE, qui n'a pas fermé et éliminé le cadre.

Régler setDefaultCloseOperation sur EXIT_ON_CLOSE était la solution pour moi. Intéressé de voir les commentaires de personnes plus compétentes à ce sujet, cependant.

1
mcmlxxxvi