Condividi tramite


Esempio di applicazione per l'aggiunta e la rimozione di stress della memoria

Aggiornamento: novembre 2007

In questo esempio viene illustrata l'interoperabilità tra codice gestito e codice non gestito per la Garbage Collection.

Per informazioni sull'utilizzo degli esempi, vedere i seguenti argomenti:

Download sample

Per compilare l'esempio utilizzando il prompt dei comandi

  1. Aprire la finestra del prompt dei comandi, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory GCDemo. Per informazioni sulle impostazioni necessarie e sul prompt dei comandi dell'SDK, vedere Procedura: definire impostazioni di esempio.

  2. Dalla riga di comando digitare msbuild GCDemoCS.sln o msbuild GCDemoVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare.

Per compilare l'esempio utilizzando Visual Studio

  1. Aprire Esplora risorse, quindi spostarsi in una delle sottodirectory specifiche del linguaggio della directory GCDemo.

  2. Fare doppio clic sul file GCDemoCS.sln o GCDemoVB.sln, a seconda del linguaggio di programmazione che si desidera utilizzare, per aprire il file in Visual Studio.

  3. Scegliere Compila soluzione dal menu Compila.

Per eseguire l'esempio

  • Aprire la finestra del prompt dei comandi, quindi spostarsi nella directory contenente il nuovo eseguibile.

Requisiti

Per questi esempi sono necessari i file di intestazione di Windows, che sono disponibili per il progetto se questo viene compilato mediante Microsoft Visual Studio 2005 o il prompt dei comandi di Visual Studio 2005 oppure se Platform SDK è installato e specificato in un percorso di inclusione.

Osservazioni

In questo esempio vengono illustrati i nuovi metodi AddMemoryPressure e RemoveMemoryPressure della classe GC. Questi metodi consentono di modificare lo schema della strategia della Garbage Collection per le raccolte della generazione 0 e devono essere utilizzati per indicare al Garbage Collector (GC) che il numero delle risorse non gestite da allocare è molto più alto rispetto alle dimensioni del footprint della memoria gestita per le stesse risorse. Senza questo suggerimento, il Garbage Collector non disporrà di alcuna informazione sulla memoria non gestita e potrebbe quindi scegliere una strategia di raccolta non ottimale.

Durante l'esecuzione dell'esempio, notare il numero delle allocazioni riuscite con e senza stress della memoria (il numero delle allocazioni riuscite sarà maggiore quando si aggiunge lo stress in modo appropriato). Notare inoltre come l'aggiunta di stress determina un notevole aumento del numero di raccolte della generazione 0 eseguite dal Garbage Collector.

Ricordare sempre di associare a una qualsiasi aggiunta di stress una rimozione appropriata della stessa quantità di stress.