PDA

Visualizza la versione completa : [Java] errore mai visto


prozac76
01-06-2005, 20:22
Mandando in esecuzione una mia applicazione java ho ottenuto questo errore:

java.lang.OutOfMemoryError

Exception in thread "main"

Quello che il programma fa semplicemente collegarsi ad internet e
conseguentemente collegersi in modo ricorsivo ai link delle pagine visitate.
Non sembrerebbe molto pesante, a parte il gran numero di links e output!
Qualcuno sa cosa vuol dire e a cosa legato?
Grazie in anticipo!

HARDCORE3000
01-06-2005, 21:13
java.lang.OutOfMemoryError indica che hai superato il limite di memoria. Esattamente non s dove superi questo limite, comunque guardati il tuo codice e vedi se qualche variabile non sovracarica di dati. Se fosse dovuto a questo ti consiglio un ArrayList, altrimenti devi capire da dove viene il problema. :ciauz:

prozac76
01-06-2005, 22:55
In che senso variabile sovraccaricata?
Forse il problema che verranno aperte un centinaio di connessioni e creati altrettanti oggetti...
Potresti dirmi di pi?
Grazie

anx721
02-06-2005, 00:22
il problema puo essere dovuto alla istanziazione di troppi oggetti..ma un centinaio e comunque poco..oppure dovuto ad un metodo ricorsivo che richiama se stesso infinite volte.

prozac76
02-06-2005, 19:10
Di metodo ricorsivo ce n' uno che si richiama ma non all'infinito.
Il programma infatti va avanti per una decina di minuti e poi si blocca...forde ho istanziato troppi oggetti.Bha'?
Grazie

anx721
02-06-2005, 20:06
bisognerebbe vedere il codice...se metti un'istruzione di stampa puoi renderti conto se il metodo ricorsivo chiamato troppe volte...poi diende anche da quanto pesanti sono gli oggetti che istanzi

prozac76
03-06-2005, 09:09
Ho messo molti logger tant che pensavo fossero quelli.
Gli oggetti creati sono per lo pi Vector di stringhe e connessionii con URLConnection..forse devo gestire meglio quelli!
Grazie per i consigli

kentaromiura
03-06-2005, 09:21
Originariamente inviato da prozac76
Di metodo ricorsivo ce n' uno che si richiama ma non all'infinito.
Il programma infatti va avanti per una decina di minuti e poi si blocca...forde ho istanziato troppi oggetti.Bha'?
Grazie
un metodo ricorsivo ogni volta che si richiama deve salvare l'ambiente in cui e' ..
quindi poche volte non significa molto poiche' dopo alcune volte la memorie diviene troppo piena..

si puo' tentare di forzare il GC a spazzare via un po di memoria, ma la soluzione potrebbe non essere ne efficace, ne efficente.

Loading