AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Strana eccezione: problemi di memoria, credo

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Marco
Guest





PostPosted: Mon Nov 27, 2006 10:56 pm    Post subject: Strana eccezione: problemi di memoria, credo Reply with quote



Ho una classe che memoriza un elenco di Canvas da visualizzare in
successione su un Frame (li memorizzo per evitare di dover ripetere
l'elaborazione ogni volta che vado avanti o indietro di una pagina.
Tutto funziona correttamente finchè il numero delle pagine da
memorizzare non diventa troppo grande, altrimenti capita che l'immagine
del Frame si corrompa, per poi generare la seguente eccezione:


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException:
HDC for component

at sun.java2d.loops.DrawGlyphList.DrawGlyphList(Native Method)

at
sun.java2d.pipe.SolidTextRenderer.drawGlyphList(SolidTextRenderer.java:36)

at
sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:53)

at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2642)

at scritta.paint(scritta.java:226) // <===
at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)

at sun.awt.RepaintArea.paint(RepaintArea.java:224)

at
sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:254)

at java.awt.Component.dispatchEventImpl(Component.java:4031)

at java.awt.Component.dispatchEvent(Component.java:3803)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)

at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)

at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at
java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

E' sicuramente un problema di memoria; voglio dire che non ci sono
errori nel codice, ma il problema (l'eccezione nel paint della classe
"scritta")
si presenta SOLO se ci sono troppe pagine (diciamo, per esempio, 60
pagine, ognuna formata da 10-15 Canvas, ognuno con un'immagine). Quello
che vorrei è capire come governarla (Quanti Canvas memorizzare, al
massimo? Quante immagini? Che vuol dire, esattamente, HDC for
component?


La cosa strana è che il problema si presenta anche se i frame non
hanno molti contenuti, ma ne visualizzo parecchi in successione con un
codice tipo il seguente:

for (int i=0;i<elenco.size();i++)
{
myclass datiPerFrame=(myclass)elenco.elementAt(i);
java.awt.Frame f=new java.awt.Frame();
myFrame myf=new myFrame(f,datiPerFrame);
try
{
String n=(new BufferedReader(new
InputStreamReader(System.in))).readLine();
if (n.equals("s"))
{i=i+9;}
//salta 9 Frame se digito "s", altrimenti passa semplicemente al
successivo alla pressione di "invio"
}
catch (IOException ex) {}
myf.stopBackground();//causa terminazione thread che calcola in
backround dati per pagine ancora da visualizzare; è pulito, funziona,
e non genera eccezioni
f.removeAll();
f.setVisible(false);
}

Ora, essendo le variabili f e myf definite all'interno del ciclo, mi
aspetterei che venga liberata la memoria per loro allocata quando si
passa al successivo valore di i, dopo f.setVisible(false): invece,
sembra che non sia così, perchè se accumulo diciamo 15-18 frame,
incomincio a riscontrare i problemi che dicevo (corruzione
dell'immagine, poi eccezione), indipendentemente dal fatto di saltarne
qualcuno o meno (in altre parole, il problema non sono i dati del
singolo frame, ma l'accumulo di occupazione di dati in memoria, in
qualche modo, e ciò anche se non compare il classico outOFMemory
Error).

Qualcuno sa darmi qualche consiglio?
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.