Error: Java Heap Space – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Error: Java Heap Space – Java – Fórum – Programujte.comError: Java Heap Space – Java – Fórum – Programujte.com

 

20. 6. 2013   #1
-
0
-

Zdravím,

poprvé jsem se setkal s tímto problémem a chtěl bych se zeptat, jak optimalizovat tuhle metodu, pokud v tom je problém..

 
try {
            for (String ID : seznamID) {
                FileReader fr = new FileReader(new File("src/soubory/" + ID + ".txt"));
                BufferedReader br = new BufferedReader(fr);
                String radek = br.readLine();

                String jmeno = "";
                String adresa = "";
                String datum = "";
                String cena = "";
                String popis = "";

                List<Kytice> kytice;
                kytice = new ArrayList<>();

                for (int j = 0; j < 4; j++) {
                    if (j == 0) {
                        jmeno = radek;
                    } else if (j == 1) {
                        adresa = radek;
                    } else if (j == 2) {
                        datum = radek;
                    } else if (j == 3) {
                        cena = radek;
                    } else {
                        popis += radek;
                    }
                    String[] poleKytic = popis.split(", ");

                    for (int k = 0; k < poleKytic.length; k++) {
                        kytice.add(seznamKytic.get(poleKytic[k]));
                        vlozObjednavku(new Objednavka(jmeno, adresa, datum, cena, ID, kytice));
                    }

                    radek = br.readLine();
                }
            }
        }

Doufám, že je to přehledné. Jde akorát o jednoduché načtení souboru (v mém případě zatím jen jednoho?) a vytvoření instance Objednávky na základě toho, co je na těch čtyřech řadcích v každém z toho souboru.

Nahlásit jako SPAM
IP: 90.177.193.–
KIIV
~ Moderátor
+43
God of flame
20. 6. 2013   #2
-
0
-

pravdepodobne spotrebovavas prilis pameti... (coz v jave neni zase takovej problem) - defaultne je na to udajne kolem 128MB pameti.. da se bud zvetsit, nebo zmensit mnozstvi dat co mas v pameti ... (a nebo to delat v necem min zravym)

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mips0
Duch
22. 7. 2013   #3
-
0
-

#1 wannabewebguy
Neznám počet a velikost ani obsah načítaných souborů, ani není k dispozici celý zdroják, takže nevím, kde se spotřebovává tolik paměti, takže jen nápad:

  • vůbec nezavíráte soubory - když už používáte JDK 7, využijte try-with-resources

Pak je tam ještě věc, která asi s problémy s heapem nesouvisí, ale smrdí:

  • nezdá se mizpůsob, jak ty soubory parsujete, obzvlášť to, jak pracujete s popisem:
    Jestli se nepletu, tak 'popis' zůstane vždy prázdný (poslední else-blok nikdy neproběhne), tudíž 'poleKytic' zůstane také prázdné a tělo následného for-cyklu také nikdy neproběhne. I kdybyste počet cyklů prostředního for-cyklu neomezil na 4, takže by se 'popis' mohl něčím naplnit, tak se mi zdá divné, že jeho obsah parsujete (dělíte pomocí ", ") ještě před načtením všech řádků daného souboru.

Nahlásit jako SPAM
IP: 84.42.164.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Zvětšení java Heap — založil Honza

Space Engineers — založil Luxion

SDL - space restrictor — založil entity

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý