It is currently 8 June 2025, 17:22 Advanced search

destroy him, my robot.

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

destroy him, my robot.

Postby theguru » 10 February 2016, 3:54

forse è uno strascico psicologico dei tempi dell'università: se ad ogni "malloc" non corrispondevano i giusti "free" eri carne da macello agli esami.
Ed in effetti anche ora mi sento incompleto, avendo un botto di funzioni per inizializzare e istanziare documenti e collection, quindi strutture dati anche corpose, e nessuna funzione per distruggerli e liberare risorse, una volta che loro funzione si è esaurita.
Sono l'unico?
User avatar
theguru
 
Posts: 972
Joined: 29 January 2014, 13:01

Re: destroy him, my robot.

Postby r.bianco » 10 February 2016, 7:51

Sono nel dubbio anch'io (Foundation .NET), e più in particolare mi lasciano perplessi:
1. Dichiarazioni di variabili dentro a cicli.
2. Mancanza di 'distruttore'.
3. Close di recordset non ritenuti necessari (o forse ricordo male).

Da quello che ho capito, è il garbage collector del framework .NET che si occupa di liberare la memoria non più utilizzata. Eppure, quando lavorarvo con VS e la prima versione di .NET, ho avuto seri problemi di prestazioni affidandomi al raccoglitore di rifiuti microsoft, risolti poi occupandomi io stesso della spazzatura.

Per andare sul sicuro io affronto la questione in questo modo:
1. Dichiaro tutte le variabili all'inizio, e le svuoto eventualemente all'interno dei cicli per non avere valori vecchi (una bella rotta di scatole).
2. Ho creato una procedura pubblica che, se la classe è istanziata, esegue '.clear' e '= null' e la richiamo alla fine della procedura per tutte le classi istanziate.
3. Chiudo e metto a null tutti i recordset che apro.

Ammetto però di non essere un esperto della questione, e mi sono sempre chiesto se tutto questo lavoro in più ha un senso oppure è tempo sprecato.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46

Re: destroy him, my robot.

Postby theguru » 10 February 2016, 16:25

Capisco la tua soluzione.
Tecnicamente mi chiedo, se dichiarando =null un doc od una collection, effettivamente questa venga eliminata, o semplicemente venga spostato il suo puntatore ad un valore nullo, lasciando integra la struttura dati, fino all'intervento del garbage collector.
Per questo un doc.destroy() taglierebbe la testa al toro.
User avatar
theguru
 
Posts: 972
Joined: 29 January 2014, 13:01

Re: destroy him, my robot.

Postby t.simoncini » 10 February 2016, 16:40

Questa discussione è interessante.
Abbiamo anche noi dei decadimenti di prestazioni dopo qualche ora che la sessione di lavoro non viene chiusa.
Non abbiamo ancora fatto indagini per mancanza di tempo, ma quello che dite mi mette una pulce nell'orecchio.

Sarebbe interessante sapere se qualcuno ha fatto analisi approfondite, o se ProGamma può darci delucidazioni a riguardo.

Ovviamente anche noi siamo su Foundation .NET
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: destroy him, my robot.

Postby r.bianco » 10 February 2016, 17:01

theguru wrote:Tecnicamente mi chiedo, se dichiarando =null un doc od una collection, effettivamente questa venga eliminata, o semplicemente venga spostato il suo puntatore ad un valore nullo, lasciando integra la struttura dati, fino all'intervento del garbage collector.


Sono piuttosto sicuro che influenzi solo il puntatore e non la memoria allocata. Mi capita spesso di istanziare documenti su variabili, valorizzarli e passarli poi ad un pannello, concludendo con un 'variabile = null'.

t.simoncini wrote:Abbiamo anche noi dei decadimenti di prestazioni dopo qualche ora che la sessione di lavoro non viene chiusa.


A noi è capitato con molte server session, ai tempi la connessione al db non veniva chiusa dal framework di InDe e inoltre avevamo aumentato a dismisura il timeout delle sessioni su IIS. Entrambe questioni risolte passando alla 14.0 di InDe e 7.5 di IIS.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4979
Joined: 8 November 2010, 16:46

Re: destroy him, my robot.

Postby t.simoncini » 10 February 2016, 17:10

r.bianco wrote:
t.simoncini wrote:Abbiamo anche noi dei decadimenti di prestazioni dopo qualche ora che la sessione di lavoro non viene chiusa.


A noi è capitato con molte server session, ai tempi la connessione al db non veniva chiusa dal framework di InDe e inoltre avevamo aumentato a dismisura il timeout delle sessioni su IIS. Entrambe questioni risolte passando alla 14.0 di InDe e 7.5 di IIS.


Grazie della precisazione.
t.simoncini
 
Posts: 1585
Joined: 5 March 2012, 14:00

Re: destroy him, my robot.

Postby g.lanzi » 23 February 2016, 11:13

Se le variabili sono propriamente annullate dal codice applicativo e non ci sono altri puntatori che le tengono in vita il problema non dovrebbe sussistere. L'applicazione usata per il crm e l'help desk, ad esempio, è attiva da alcuni mesi senza riavvio a parte i recycle periodici di IIS.

Il garbage collector di C# dovrebbe fare il suo dovere nel modo corretto, ma si potrebbe comunque fare delle prove lanciando su un server di test un certo numero di sessioni e verificando lo stato dell'occupazione di memoria.

In questo blog http://blog.progamma.com/tips-tricks-problemi-di-memoria/ suggerisco un tool che mi è capitato di usare in versione di prova e che mi aveva lasciato soddisfatto.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: destroy him, my robot.

Postby theguru » 24 February 2016, 12:00

g.lanzi wrote:Se le variabili sono propriamente annullate dal codice applicativo


eccomi.
ero proprio interessato a questo punto: come si annullano propriamente?
mi viene in mente il clear per le collection e doc, ma svuotare credo sia diverso da annullare..
User avatar
theguru
 
Posts: 972
Joined: 29 January 2014, 13:01

Re: destroy him, my robot.

Postby g.lanzi » 29 February 2016, 15:46

variabile = null è il modo giusto, fa sì che appena gira il garbage collector la memoria sia liberata. Se è una collection anche clear va bene.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 12 guests

cron