Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151

    [VB.NET 2005] Scaricare oggetti dalla memoria

    Ciao a tutti, quando chiudo un form, è corretto fare solo la "Dispose" di tutti gli oggetti usati (dove possibile) o è meglio impostarli anche a Nothing?
    Io attualmente faccio così:
    codice:
    oggetto.Dispose()
    oggetto=Nothing
    Me.Dispose
    Quanto sopra va bene o oggetto=Nothing non serve a niente?
    Grazie
    Jupy

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [VB.NET 2005] Scaricare oggetti dalla memoria

    Originariamente inviato da Jupy64
    Quanto sopra va bene o oggetto=Nothing non serve a niente?
    Impostare un riferimento a Nothing, al massimo, può rendere un oggetto papabile di distruzione da parte del GC prima che la variabile esca dal proprio "scope", nulla di più.

    In ogni caso, è sempre il GC che si occupa di rilasciare la memoria degli oggetti "gestiti".

    La chiamata a Dispose è utile per rilasciare, quando gli oggetti ne fanno uso, le risorse esterne, non "gestite", rilasciando la memoria occupata da esse il prima possibile.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Capito, allora meglio continuare a usare anche il "Nothing"..
    Grazie
    Jupy

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Jupy64
    Capito, allora meglio continuare a usare anche il "Nothing".
    Forse il mio messaggio lascia intendere un'altra cosa, ma secondo me è inutile.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    :master: ma non avevi detto che con Nothing era più papabile per la GC e quindi, in teoria, dovrebbe liberare prima la memoria..o no??
    Jupy

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Jupy64
    :master: ma non avevi detto che con Nothing era più papabile per la GC e quindi, in teoria, dovrebbe liberare prima la memoria..o no??
    Sì, ma se si tratta di una variabile che esce dallo "scope" subito dopo, non ha senso.

    Un esempio:
    codice:
    Public Sub SomeProcedure
        Dim SomeVar As New SomeObject
        ' ......
        SomeVar = Nothing
    End Sub
    Se si tratta di una variabile locale, non ha senso metterla a Nothing poco prima che esca dallo scope, e non ne ha molto anche in mezzo al corpo della procedura in quanto la sua durata di esecuzione di questa è talmente ridotto da rendere 1) trascurabile se non assente l'effetto di qualsiasi impostazione della variabile; 2) fuorviante e "inquinato" il codice; 3) più corposo il corpo del metodo per via delle istruzioni che impostano a Nothing le variabili.

    A meno che non si tratti di una variabile a "lunga durata", la cui persistenza è superiore a quella descritta precedentemente, io eviterei di porre a Nothing alcuna variabile, salvo in quei casi in cui questa operazione ha un senso.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    ho capito, lo stesso discorso vale anche quando si chiude un form..
    Jupy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.