Avatar billede bris Nybegynder
11. juni 2003 - 13:06 Der er 3 kommentarer og
1 løsning

Java, XML, JDOM og OutOfMemoryException

Jeg har lavet en løkke, som skal løbe nogle XML-filer igennem, og hente data derfra. Filerne kan blivegodt store, men ikke over 10 mb. Jeg bruger SAXParser og Document til at håndtere filen! Men jo længere jeg kommer i løkken, jo mere memory tager parseren, også selvom jeg husker at fjerne referencen!! Der ser sådan her ud:
while (ite.hasNext()) {
        tab = (Table)ite.next();
    filename = new StringBuffer();
        filename.append(tab.getName() + ".xml");
        file = new File(path + filename.toString());
        if (file.exists()) {
      doc = null;
          builder = null;
          doc = new Document();
      builder = new SAXBuilder();
          builder.setIgnoringElementContentWhitespace(true);
          doc = builder.build(new File(path + filename.toString()));

---------Videre håndtering af fil---------

Men den løber tør for memory... Ligesom den ikke få smidt det helt ud af enten parseren eller documentet. (og jeg har prøvet skodløsningen med System.gc()) Lader jeg den kune tage nogle af filerne, så mængden af data ikke er så stor, så virker det.. (Så der er ikke fejl i koden)

Håber i kan hjælpe mig!! 60 point på spil!!
Avatar billede bris Nybegynder
11. juni 2003 - 13:08 #1
Jeg mente selvfølgelig at jeg bruger en SAXBuilder og ikke en SAXParser.. som der også står i koden.. sorry!!
Avatar billede arne_v Ekspert
11. juni 2003 - 13:31 #2
Jeg kender ikke JDOM's interne data-strukturer men jeg vil formode
at de også har hele filen i memory. D.v.s. en 10 MB XML-fil
vil kræve 25-50 MB memory.

Men det er korrekt forstået at det virker  med 1 x 10 MB XML-fil men
fejler med N x 10 MB XML-fil - og det er derfor du mener at den
leaker memory i hvert gennemløb af løkken.

Hvilken version af JDOM kører du med ?

Hvilken -Xmx og -Xms kører du med ?
Avatar billede bris Nybegynder
16. juni 2003 - 13:26 #3
jeg bruger Jdomb9, og min memory er: -Xmx64 og -Xms128  Men det hjælper slet ingenting, jeg er seriøst nødt til at bruge en metode, som ikke ligger det hele i memory!!
Avatar billede bris Nybegynder
16. juni 2003 - 13:27 #4
har oprettet et andet spørgsmål.. Gik en helt anden vej..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Stærk sagsbehandler til støtte for Kapacitetsmanager og egen portefølje

Ingeniørforeningen, IDA

Platform Engineer i IDA