|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
[C++]Garbage Collector
Mi chiedevo quale fosse il vantaggio di usarlo al posto della gestione manuale della memoria dinamica....
Delucidazioni in merito?
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
in teoria dovrebbe permettere di nn preoccuparsi di alocare/disallocare oggetti.
IMHO è uno dei motivi per cui Java è cosi pesante da eseguire, perche vengono eseguiti periodicamente dei controlli che degradano, sempre IMHO, un po le prestazioni.
__________________
Gnu/Linux User
|
|
|
|
|
|
#3 | |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Re: [C++]Garbage Collector
Quote:
- porta via tempo al programmatore - e' fonte di un numero maggiore di errori - In programmi molto complessi e' difficile stabilire in modo chiaro quando della memoria non serve piu' (e quando serve ancora), questo fa si' che il software tenda a perdere memoria oppure che si debba ricorrere ad un framework per la gestione della memoria; quest'ultimo puo' avere anche un costo maggiore di un buon garbage collector (visto che quest'ultimo puo' lavorare in modo incrementale su di un thread parallelo, e quindi evitare lunghe pause per la liberazione della memoria) |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
mmmhhh.... quindi queste considerazioni mi fanno pensare di favorire questa tenica anche in funzione di "costi" a livello di affidabilità e portabilità nonchè esecuzione se parliamo lato "tecnico".
Bene. Quindi, se volessi impedire altri accessi ad un qualsiasi oggetto che non viene più referenziato, mi basterebbe assegnargli un valore pari a zero per fare in modo che un oggetto successivo possa sfruttare l'area di memoria così liberata?
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
|
Quote:
__________________
Gnu/Linux User
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
quindi sarebbe corretto così?
Codice:
{
int* a = new int;
a = 0;
char* b = new char;
}
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Quote:
Codice:
{
int* a = new (gc) int;
a = 0;
char* b = new char;
}
Tieni presente pero' che se ti appoggi al g.c., la deallocazione effettiva puo' avvenire in qualsiasi momento, anche alla fine dell'esecuzione del programma. Ad esempio: Codice:
class Test : gc
{
public:
Test(int n){ m=n; cout << "Costruttore " << n <<endl; }
~Test(){ cout << "Distruttore " << m << endl; }
int m;
};
...
{
Test* t = new Test(1);
t=0;
Test* t2 = new Test(2);
...
}
potrebbe essere uno qualsiasi dei seguenti Codice:
Costruttore 1 Costruttore 2 Distruttore 1 Distruttore 2 Costruttore 1 Distruttore 1 Costruttore 2 Distruttore 2 Costruttore 1 Costruttore 2 Distruttore 2 Distruttore 1 |
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Qui puoi trovare un esempio (l'unico che conosca a dire il vero) di Garbage Collector per C++.
Ci sono inoltre diversi link e documenti interessanti sulla G.C., nel caso tu voglia approfondire un po'. http://www.hpl.hp.com/personal/Hans_Boehm/gc/ |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quindi ritornando al dubbio che avevo, è una tecnica da usare prevalentemente con "completa coscienza". Leggevo infatti che anche lo standard non la prevede.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
|
|
|
|
|
|
|
#12 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Oltre che Swing non mi elettrizza più di tanto, questo è uno dei motivi che non lo fanno annoverare fra i miei linguaggi di programmazione preferiti. Per quanto riguarda i linguaggi interpretati, dal poco che ho visto preferisco python. |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Quote:
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:35.



















