Erreur java heap space [Résolu]

pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention - 15 mars 2007 à 16:16 - Dernière réponse : pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

9 réponses

cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 mars 2007 à 19:59
+3
Utile
Bah déjà ajoute un WindowListener à ton JInternalFrame, et fait un dispose() de ta frame. Ensuite, vide tes collections, ferme tes fichiers, etc.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
gmi19oj19 546 Messages postés lundi 10 mai 2004Date d'inscription 28 septembre 2011 Dernière intervention - 17 mars 2007 à 13:52
+3
Utile
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^^
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de gmi19oj19
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 mars 2007 à 17:00
0
Utile
Je dirais que l'erreur vient de la ligne n°43 de ta classe principale !
Commenter la réponse de cs_DARKSIDIOUS
pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention - 15 mars 2007 à 17:14
0
Utile
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.
Commenter la réponse de pseudo85
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 mars 2007 à 17:24
0
Utile
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 ?
Commenter la réponse de cs_DARKSIDIOUS
pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention - 15 mars 2007 à 17:48
0
Utile
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();
}


   }


}




}
Commenter la réponse de pseudo85
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 mars 2007 à 18:12
0
Utile
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.
Commenter la réponse de cs_DARKSIDIOUS
pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention - 15 mars 2007 à 18:32
0
Utile
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.
Commenter la réponse de pseudo85
pseudo85 64 Messages postés mardi 7 février 2006Date d'inscription 17 juillet 2009 Dernière intervention - 17 mars 2007 à 16:29
0
Utile
Ok, merci pour vos conseils. Je m'y mets tout de suite.
Commenter la réponse de pseudo85

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.