Erreur java heap space

Résolu
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009 - 15 mars 2007 à 16:16
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009 - 17 mars 2007 à 16:29
Bonjour,
j'ai un programme qui m'affiche une erreur lorsque j'appuie plus d'une fois sur un boutton
l'erreur est la suivante:
"Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space"
je voudrais savoir quel est le problème et comment faire pour le résoudre?
Merci pour votre aide.

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 mars 2007 à 19:59
Bah déjà ajoute un WindowListener à ton JInternalFrame, et fait un dispose() de ta frame. Ensuite, vide tes collections, ferme tes fichiers, etc.
3
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
17 mars 2007 à 13:52
Sinon, tu peux passer en argument à la commande java un -Xmx128

pour augmenter la mémoire allouée à la JVM (64m par defaut). Tu peux mettre aussi plus que 128, ça va de soit^^
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 mars 2007 à 17:00
Je dirais que l'erreur vient de la ligne n°43 de ta classe principale !
0
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009
15 mars 2007 à 17:14
je na sais pas à quelle ligne se situe l'erreur. Cette erreur ne me renvoie à aucune ligne dans mon code. lorsque j'appuie plus d'une fois sur le boutton, uniquement l'erreur suivante s'affiche: "Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space".
Toute aide me sera très utile.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 mars 2007 à 17:24
Bah si tu veux qu'on puisse t'aider, il nous faudrait au moins le code qui s'éxécute lorsque tu clique sur le bouton, tu crois pas ?
0
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009
15 mars 2007 à 17:48
en fait, ce boutton affiche une jInternalframe. lorsque je clique sur le bouton la première fois, aucune erreur ne s'affiche. Au deuxieme clic, l'erreur s'affiche, ensuite meme si je clique sur un boutton qui ne posais aucun problème auparavant la meme erreur s'affiche pour tous les boutons de l'application.
le code:
void jButton1_actionPerformed(ActionEvent e) {
        Documentation frame = new Documentation(col1);//col1: Collection de String
        frame.setBounds(0, 0, 500, 320);
        desktopPane.add(frame, new Integer(1));
        frame.show();
  }

/*******************************/
public class Documentation extends JInternalFrame {
  private JPanel jPanel1 = new JPanel();
  private JPanel jPanel2 = new JPanel();
  private JPanel jPanel3 = new JPanel();
  private JPanel jPanel4 = new JPanel();
  private JSplitPane jSplitPane1 = new JSplitPane();
  private JPanel jPanel5 = new JPanel();
  private JPanel jPanel6 = new JPanel();
  private JList jList1 = new JList();
  private JScrollPane jScrollPane1 = new JScrollPane();
  private JLabel jLabel1 = new JLabel();
  private JdbTextPane jdbTextPane1 = new JdbTextPane();
  private JdbEditorPane jdbEditorPane1 = new JdbEditorPane();
  private JLabel jLabel2 = new JLabel();
  private JScrollPane jScrollPane2 = new JScrollPane();
  private StyleListListener liste = new StyleListListener();


    Object[] Y = null;
  String scenario = "C:\\Program Files\\Protege_3.1 \\examples\\Diagnostic\\Diagnostic.pprj";
 Collection errors = new ArrayList();
 Project project = new Project(scenario, errors);
 KnowledgeBase kb = project.getKnowledgeBase();
 String slotName = "nom_technique";
  Slot slot = kb.getSlot(slotName);
  boolean bool = false;
  Object selected = null;
  boolean boule;
  int j=0;
  String d = null;
  String s;
  String t;
  int size;


  public Documentation(Collection col) {
    try {
      jbInit(col);
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit(Collection col) throws Exception {
    this.setClosable(true);
    this.setMaximizable(true);
    this.setResizable(true);
    this.setTitle("Documentation");
    jPanel1.setLayout(null);
    jPanel2.setLayout(null);
    jPanel3.setLayout(null);
    jPanel4.setLayout(null);
    jSplitPane1.setBounds(new Rectangle(23, 25, 433, 331));
    jPanel5.setLayout(null);
    jPanel6.setLayout(null);
    jList1.setSelectionBackground(SystemColor.activeCaption);
    jList1.setBounds(new Rectangle(2, 1, 96, 327));
    jScrollPane1.setBounds(new Rectangle(2, 6, 97, 321));
    jLabel1.setFont(new java.awt.Font("Serif", 1, 16));
    jLabel1.setText("Nom du composant:");
    jLabel1.setBounds(new Rectangle(18, 15, 160, 23));
    jdbTextPane1.setBackground(SystemColor.inactiveCaptionText);
    jdbTextPane1.setBounds(new Rectangle(17, 38, 181, 27));
    jdbEditorPane1.setBounds(new Rectangle(23, 106, 299, 213));
    jLabel2.setFont(new java.awt.Font("Serif", 1, 16));
    jLabel2.setText("Documentation:");
    jLabel2.setBounds(new Rectangle(19, 72, 147, 28));
    jScrollPane2.setBounds(new Rectangle(24, 110, 299, 212));
    jPanel4.setBackground(SystemColor.control);
    jPanel6.setBackground(SystemColor.control);
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    this.getContentPane().add(jPanel4, BorderLayout.CENTER);
    jPanel4.add(jSplitPane1, null);
    jSplitPane1.add(jPanel5, JSplitPane.TOP);
    jPanel5.add(jList1, null);
    jPanel5.add(jScrollPane1, null);
    jSplitPane1.add(jPanel6, JSplitPane.BOTTOM);
    jPanel6.add(jLabel1, null);
    jPanel6.add(jdbEditorPane1, null);
    jPanel6.add(jdbTextPane1, null);
    jPanel6.add(jLabel2, null);
    jPanel6.add(jScrollPane2, null);
    jSplitPane1.setDividerLocation(100);


        Y = col.toArray() ;
    size = col.size();
     String[] data = new String[size];
     j = 0;
     while (j<col.size()){
           t = Y[j].toString();
           Instance defaillance = kb.getInstance(t);
            data[j] = defaillance.getBrowserText();
            j++;
     }
     jList1.setListData(data);
     jScrollPane1.getViewport().setView(jList1);
     jScrollPane2.getViewport().setView(jdbEditorPane1);
     jList1.addListSelectionListener(liste);


 


  }


  class StyleListListener implements ListSelectionListener {


   public void valueChanged (ListSelectionEvent e) {


      s="";
     boule = e.getValueIsAdjusting();
     if (boule) return;


      bool = false;
       selected = jList1.getSelectedValue();


     j = 0;
    d=null;
    Instance def = null;


  while ((bool==false)&&(j<size)){
   d = Y[j].toString();
  j++;
   def = kb.getInstance(d);
  s = def.getBrowserText().toString();
  if (selected.equals(s)) {
     bool = true;
     }
  }
jdbTextPane1.setText(def.getOwnSlotValue(slot).toString());
jdbEditorPane1.setContentType("text/html");


try
{
  jdbEditorPane1.setEditable(false);


  jdbEditorPane1.setPage("[file:///C:/Documents File:///C:/Documents] and Settings/ms/Mes documents/Selma/5ème année/diagnostic turbine à gaz/diagnostic des turbines à gaz/Gas turbine root cause failure diagnosis 1.htm");


}
catch(IOException e1)
{
e1.printStackTrace();
}


   }


}




}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 mars 2007 à 18:12
Cela vient certainement d'une fuite mémoire : lorsque tu ferme ta JInternalFrame, tu ne doit pas fermer les fichiers et tes contrôles, et du coup, si tu réessaye de réouvrir ta feuille, tu n'as plus assez de mémoire pour tout stocker.

Est-ce que tu utilise des collections d'objets ou des données qui prennent de la place dans ton JInternalFrame ?

Essaye de faire un profilling de ton application voir quels sont les objets qui ne sont pas détruits lors de la fermeture de ta feuille.
0
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009
15 mars 2007 à 18:32
Ok, merci j'ai compris le problème. J'utilise donc des collections d'objets dans la JInternalFrame. je voudrais savoir comment faire pour fermer les fichiers et les controles et comment détruire les objets.
Merci d'avance.
0
pseudo85 Messages postés 64 Date d'inscription mardi 7 février 2006 Statut Membre Dernière intervention 17 juillet 2009
17 mars 2007 à 16:29
Ok, merci pour vos conseils. Je m'y mets tout de suite.
0
Rejoignez-nous