Utilizzo della memoria aumenta quando si esegue un Visual Basic 2005 o l'applicazione di Visual Basic 2008 che crea un'istanza di una classe

Traduzione articoli Traduzione articoli
Identificativo articolo: 919481 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Si consideri lo scenario seguente:
  • Creare un'applicazione di Microsoft Visual Basic in Microsoft Visual Studio 2005 o in Visual Studio 2008.
  • L'applicazione di Visual Basic contiene una classe.
  • La classe contiene un evento.
  • L'applicazione Visual Basic crea un'istanza della classe.
  • ╚ compilare l'applicazione Visual Basic in modalitÓ di debug.
In questo scenario, quando si esegue l'applicazione Visual Basic, aumenta l'utilizzo della memoria.

Nota ╚ probabile pi¨ notare questo comportamento quando si verificano le condizioni seguenti:
  • L'applicazione di Visual Basic viene eseguita continuamente per un lungo periodo di tempo.
  • L'applicazione di Visual Basic crea molte istanze della classe che contiene un evento. Se le istanze vengono create in numero di volte sufficiente, l'applicazione alla fine avrÓ esito negativo con un OutOfMemoryException o "memoria esaurita" errore. Ad esempio, l'applicazione di Visual Basic contiene un ciclo che vengono create pi¨ istanze della classe.

Cause

Questo problema si verifica perchÚ la modifica e continua il debug di funzionalitÓ in Visual Studio 2005 o Visual Studio 2008 gestisce un elenco di riferimenti deboli a oggetti che sono stati creati. Se l'oggetto che Ŕ stato creato Ŕ una classe che contiene un evento, questi riferimenti deboli vengono mantenuti per la durata del programma. Questo comportamento aumenta l'utilizzo della memoria.

Risoluzione

Per risolvere il problema, utilizzare uno dei seguenti metodi.

Metodo 1: Riavvia l'applicazione Visual Basic

╚ possibile riavviare l'applicazione Visual Basic. Quando si esegue questa operazione, la memoria viene liberata.

Metodo 2: Compila l'applicazione Visual Basic in modalitÓ di rilascio

╚ possibile compilare l'applicazione Visual Basic in modalitÓ di rilascio. Quando si esegue un'applicazione Visual Basic che Ŕ stata compilata in modalitÓ di rilascio, utilizzo della memoria non aumenta quando si crea un'istanza di una classe che contiene un evento.

Informazioni

Procedura per riprodurre il problema

  1. Avviare Visual Studio 2005 o Visual Studio 2008.
  2. Scegliere Nuovo dal menu file , quindi progetto .
  3. In Tipi progetto , fare clic su Visual Basic . Se non Ŕ possibile visualizzare il tipo di progetto di Visual Basic, espandere Altri linguaggi e quindi fare clic su Visual Basic .
  4. In modelli , fare clic su Applicazione Console .
  5. Digitare un nome di progetto e quindi fare clic su OK .
  6. Sostituire tutto il codice nella finestra del codice con il codice riportato di seguito.
    Module Module1
    
      Private Sub CreateClassWithEvent()
        Dim TestClass As New CLeak
      End Sub
    
      Sub Main()               
        ' This loop infinitely creates a class that contains an event.
        While True
          CreateClassWithEvent()
          System.GC.Collect()
          System.GC.WaitForPendingFinalizers()
          Threading.Thread.Sleep(50)
        End While
      End Sub
    
    End Module
    
    Class CLeak
      Event myEvent()
    End Class
    
  7. dal menu debug , scegliere Avvia.

ProprietÓ

Identificativo articolo: 919481 - Ultima modifica: venerdý 27 marzo 2009 - Revisione: 2.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Studio 2008 Standard Edition
  • Microsoft Visual Studio 2008 Professional Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual Basic 2005
Chiavi:á
kbmt kbtshoot kbprb KB919481 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 919481
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com