Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    java.lang.OutOfMemoryError

    Buonasera,

    Vi pongo un quesito....
    Ho un programmino che attraverso un jButton manda dei dati scritti in un JTextField(), aprendo un nuovo frame in cui viene generato un grafico.

    All'inizio va tutto ok, apre il frame e genera il grafico, il problema è che se chiudo il frame generato (attraverso la X) e provo a rigenerarne un altro mi da il seguente errore

    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at java.awt.geom.Path2D$Double.<init>(Unknown Source)
    at java.awt.geom.AffineTransform.createTransformedSha pe(Unknown Source)
    ...
    ...
    ...
    (in realta si apre anche il nuovo frame ma con il grafico a metà)

    Come mai?
    Ho usato anche il comando dispose() associato alla chiusura del frame , ma niente...

    Mi potete aiutare
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    nessun suggerimento?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    Grazie lo stesso

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Come dice l'errore, il tuo programma ha causato un OutOfMemoryError.
    Non sono erudito su Java, ma mi sembra che in altri post si menzionasse un'opzione da dare al compilatore in modo da riservare maggior memoria all'applicazione.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Non hai postato nemmeno una riga di codice, quindi già di per se risulta abbastanza difficile darti qualche risposta concreta se non quella di provare ad aumetare la memoria a disposizione della JVM.
    Ma, stando a quello che dici, sembrerebbe piuttosto un problema legato al tuo codice, che non scarica correttamente la memoria quando alcuni oggetti non sono più usati... ma sempre senza codice, nessuno lo può sapere.

    Ad ogni modo, con una banalissima ricerca all'interno del forum, con chiave "OutOfMemory" sarebbe saltata fuori questa discussione:

    http://forum.html.it/forum/showthrea...readid=1007338


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Rubox
    si menzionasse un'opzione da dare al compilatore in modo da riservare maggior memoria all'applicazione.
    Questo sì, è fattibile ma potrebbe solo spostare poco più avanti nel tempo un OutOfMemoryError.

    Bisogna vedere cosa è stato fatto in modo preciso e come sono stati gestiti gli oggetti. Se l'algoritmo implementato è così "vizioso" che usa male gli oggetti .... puoi anche aumentare la dimensione del heap e sprecare solo più memoria!

    Vuoi un esempio? Hai un file di testo di 10 Megabyte e l'heap space ha una dimensione massima di 64 Megabyte. Se leggi il file in questo modo:

    codice:
    BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    
    String s = "";
    String l;
    
    while ((l = br.readLine()) != null) {
        s += l;
    }
    Innanzitutto è inefficientissimo perché usa la concatenazione delle stringhe. Ad ogni ciclo viene creato e riempito un StringBuffer (o StringBuilder da Java 5) e sempre ad ogni ciclo viene comunque istanziato poi un nuovo String riassegnato ad 's'.

    Bene, a seconda della lunghezza delle linee, è possibile che si ottenga un OutOfMemoryError anche se l'heap è 6 volte la dimensione del file.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.