|
|
|
![]() |
|
Strumenti |
![]() |
#261 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
@TigerShark
Beh certo che riarrangiando il codice puoi evitare il leak ![]() Ah, ma davvero non hai mai ridimensionato un array???????
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
![]() |
![]() |
![]() |
#262 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
allocando il nuovo array all'interno del metodo e poi restituendo l'indirizzo di memoria del nuovo array il vekkio array dovrebbe andare perduto alla distruzione del metodo... o no? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#263 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hi visto che l'esempio è tratto da qui: http://www-128.ibm.com/developerwork...-jtp01246.html
|
![]() |
![]() |
![]() |
#264 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
byteArray = null; una volta terminata il calcolo? In questo modo si perde l'unico riferimento alla zona di memoria e il gc puo cancellarla. ciao ![]() |
|
![]() |
![]() |
![]() |
#265 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
![]() |
![]() |
![]() |
#266 | |
Senior Member
Iscritto dal: Sep 2005
Messaggi: 2717
|
Quote:
fermo restando che non ne conosciamo il codice, sembra che non facia altro che riempire l'array di vo0lta in volta referenziato da byteArray... scondo me il punto è solo "byteArray = new byte[len];" (unitamente al fatto che byteArray è var di istanza), perché noi riteniamo che ogni volta venga allocato un nuovo array, mentre fidel che lo stesso array ogni volta venga aumentato di lunghezza (ma mai diminuito) se necessario.
__________________
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." - Albert Einstein fonte: http://it.wikiquote.org/wiki/Albert_Einstein |
|
![]() |
![]() |
![]() |
#267 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Puoi solo allocare un nuovo array della dimensione nuova perdendo il riferimento al vecchio.... Quello che dici tu lo puoi fare con arraylist, vector, e tutti gli oggetti di tipo collection. gli Array in java sono infatti per definizione strutture a lunghezza fissa.... Quote:
![]() http://java.sun.com/docs/books/tutor...ta/arrays.html
__________________
![]() |
||
![]() |
![]() |
![]() |
#268 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#269 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
![]()
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
![]() |
![]() |
![]() |
#270 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() diglielo a quelli della sun allora che hanno sbagliato la descrizione nel loro sito ufficiale ![]() kakkio.. te lo stiamo dicendo in tre... ti ho postato un link... ti ho postato il link ufficiale della sun e ancora insisti che puoi variare la dimensione di un array dopo averlo allocato??? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#271 | |
Senior Member
Iscritto dal: Sep 2005
Messaggi: 2717
|
Quote:
__________________
"La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché." - Albert Einstein fonte: http://it.wikiquote.org/wiki/Albert_Einstein |
|
![]() |
![]() |
![]() |
#272 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#273 | |||
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Piccola pausa per festeggiare il mio compleanno ...
![]() Quote:
![]() Quote:
Nessun libro fortunatamente viene pubblicato per parlare di queste cose. I primi libri che ti ho dato, in realtà, non sono libri. Sono dispense pubblicate dal Servizio Editoriale dell'Università di Pisa e sono considerate dei capisaldi dell'informatica teorica. Diciamo che trattano le basi da cui ogni linguaggio formale ha origine. Dovrebbero metterli in pubblicazione da qualche editore serio, visto che io li considero delle bibbie in merito. Dopo averli letti cambia il modo di considerare un linguaggio di programmazione. Ti da un'ottica piu' formale all'argomento. Non è tanto facile trovare simile materiale in libri commerciali, visto che è roba davvero specializzata. Per quanto riguarda il dragon book, basta studiarlo per capire da soli (senza ulteriori libri) quando un linguaggio è di alto e basso livello. Abbiamo detto che il concetto di "medio" è puramente formale e non si considera in genere nella classificazione. I puntatori esistono anche in Pascal. Secondo alcuni ragionamenti che si sono fatti, anche Pascal allora dovrebbe essere di medio/basso livello? ![]() Quote:
![]() Posso scrivere una funzione completamente "bug free". Tuttavia il ruolo di una funzione va considerato anche sul piano semantico in relazione al codice complessivo. Quella funzione "bug free" potrebbe diventare completamente priva di senso in seguito a una modifica da un'altra parte del codice. Moltiplica il tutto per milioni di righe, strutture dati non banali che interagiscono fra loro, funzioni che si basano sul contenuto di una struttura che al minimo cambiamento diventano inconsistenti e ti rendi conto che il discorso "dell'attenzione" che facevi tu si continua ad applicare solo a software banale. Il cervello umano riesce a gestire (male) un massimo di 3 cose contemporaneamente. E' la biologia che lo dice, non serve neanche considerare l'informatica. |
|||
![]() |
![]() |
![]() |
#274 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
questo è proprio il problema del passaggio per riferimento... facendo la new nel metodo appena chiamato e ricevendo il riferimento al nuovo vettore non si stressa per niente il GC dato che quell'oggetto viene eliminato automaticamente alla morte del metodo... ripeto... MAI effettuare passaggi per riferimento... porta sempre a errori di questo tipo...
__________________
![]() |
|
![]() |
![]() |
![]() |
#275 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#276 | ||
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
![]() Leggili. Quote:
![]() |
||
![]() |
![]() |
![]() |
#277 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
http://www-128.ibm.com/developerwork...-jtp01246.html Ultima modifica di cionci : 06-02-2006 alle 16:16. |
|
![]() |
![]() |
![]() |
#278 | |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
|
|
![]() |
![]() |
![]() |
#279 | |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Nella funzione che ho scritto, quando la lunghezza del buffer non basta più, ho bisogno di crearne un altro più grande che andrà bene. Ora, se reinstanzio la stessa variabile, la vecchia memoria viene distrutta (perdendo tutto il contenuto) e viene riallocato con la nuova dimensione (ecco il ridimensionamento. Nell'esempio il problema sta nel fatto che, una volta riallocato, il buffer NON viene cancellato dal GC perchè il suo reference NON è nel metodo ma nella classe!
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
![]() |
![]() |
![]() |
#280 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:20.