Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Garbage Collector e classi
Forum - C# / VB.NET - Garbage Collector e classi - Pagina 3

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 7:19
Martedì, 09/06/2009
totem dove sei :d

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 10:35
Martedì, 09/06/2009
Mentre aspettiamo Totem, provo a spiegarti ciò che ho capito leggendo MSDN.
Codice sorgente - presumibilmente C# / VB.NET

  1. GC.AddMemoryPressure(BytesAllocated as Long)


Con questa Sub, puoi informare il sistema del fatto che c'è una pressione aggiuntiva (BytesAllocated) sulla memoria del sistema.
Dopo aver utilizzato AddMemoryPressure, quando lo riterrai opportuno dovrai utilizzare
Codice sorgente - presumibilmente C# / VB.NET

  1. GC.RemoveMemoryPressure(BytesAllocated as Long)


che informa il sistema del rilascio della pressione aggiuntiva sulla memoria. Ovviamente dovrai chiamare i due metodi (AddMemoryPressure e RemoveMemoryPressure) con lo stesso valore per il parametro BytesAllocated, che deve essere >= 0 e < Int32.MaxValue (che sarebbe 2.147.483.647 ma non credo che tu possa arrivarci :D)
Questo è quello che ho capito io, poi se ho sbagliato, Totem mi correggerà quanto prima possibile ;)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:33
Martedì, 09/06/2009
Indicando esplicitamente che la memoria occupata è elevata, penso che il GC agisca di conseguenza, anche se non so cosa faccia esattamente. E' probabile che effettui più spesso dei riciclaggi della memoria e che richieda più tempo per classificare gli oggetti come di prima generazione.

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 18:20
Martedì, 09/06/2009
e se lo richiamo ogni mezzora? o ogni ora? come lo decido quando lo chiamo?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:22
Mercoledì, 10/06/2009
Se lo richiami ogni mezz'ora significa che ogni mezz'ora aumenta il carico di memoria, ma questo non dovrebbe accadere se il garbage collector lavora a ritmo più serrato.
Puoi fare in questo modo: quando un oggetto viene creato aggiungi pressione e quando viene distrutto la togli (ora sì che puoi mettere il codice in Finalize). Questo dovrebbe rispecchiare ciò che già accade, ma data la situazione disperata, meglio provare ogni cosa.

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 18:35
Mercoledì, 10/06/2009
il fatto è che la classe user (quella che mi fa salire la memoria) non è uguale sempre allo stesso modo... quando è creta è vuota poi con il tempo si riempie e si modifica... non avrebbe senso dire al gc che occupa 5 se dopo 5 minuti diventa 10...no?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:19
Giovedì, 11/06/2009
Metti una dimensione media, allora. Intanto quello che ci interessa è vedere se quel metodo ripulisce la memoria più efficaciemente: se poi non funziona è anche inutile stare a perfezionarlo.

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 14:14
Giovedì, 11/06/2009
ho ridotto il problema a circa 4-5 procedure... se vuoi le incollo... e vediamo se qualcosa di logico è sbagliato... almeno lo confronto con voi...

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo