Concetti relativi ai controlli di attivazione a memoria ridotta COM+
In genere, la sincronizzazione non è necessaria quando si dispone di un apartment a thread singolo (STA) perché l'apartment fornisce la sincronizzazione per l'utente. La sincronizzazione diventa importante quando si dispone di un apartment multithreading (MTA) e di un oggetto a thread libero. In passato, gli oggetti a thread libero hanno dovuto gestire il blocco. È possibile eliminare la necessità di usare il blocco impostando l'attributo di sincronizzazione per un componente.
Spesso si verificano problemi di affidabilità quando le risorse di un server non possono reagire in modo efficiente ai picchi di carico. Quando un server non dispone di risorse fisiche sufficienti per soddisfare la domanda massima, può esaurire la memoria virtuale. Questo problema si verifica se il codice utente o il codice di sistema non gestisce correttamente gli errori di allocazione della memoria. Il server inizia a rallentare e, man mano che la memoria viene esaurita, le allocazioni di memoria hanno esito negativo. Il server esegue i percorsi di errore per gestire gli errori di allocazione. Se un percorso di errore contiene un bug nel sistema o nel codice utente in esecuzione nel server, è estremamente difficile intercettare e gestire in modo sicuro.
COM+ tenta di evitare situazioni in cui questi percorsi di errore devono essere eseguiti in un server. Tramite la funzionalità di attivazione a memoria ridotta, COM+ monitora in modo proattivo il carico di memoria nel sistema e garantisce che una quantità ragionevole di memoria sia disponibile prima di eseguire il codice utente. Se la percentuale di memoria virtuale disponibile per l'applicazione scende al di sotto di una soglia fissa, l'attivazione ha esito negativo prima che venga creata un'applicazione o un oggetto server COM+ (come illustrato nella figura seguente). Se si verificano errori in queste attivazioni che normalmente vengono eseguite, la funzionalità gate di attivazione a memoria ridotta riduce al minimo i problemi associati alle allocazioni di memoria nel codice utente, migliorando in modo significativo l'affidabilità del sistema.
La funzionalità gate di attivazione a memoria ridotta si applica solo ai componenti COM configurati installati in un'applicazione COM+.
Funzionamento della funzionalità Di attivazione a memoria insufficiente
La funzionalità gate di attivazione a memoria ridotta usa un livello di soglia fisso diverso a seconda del tipo di attivazione. Quando si crea un'applicazione server COM+, COM+ consente l'attivazione se è disponibile più del 10% della memoria virtuale. Se è disponibile meno del 10%, COM+ effettua un'allocazione di test per scoprire se il file di paging può espandersi per supportare il nuovo carico di memoria. Se il file di paging si espande, viene creata l'applicazione server. Se non è possibile espandere il file di paging, l'attivazione non riesce e la memoria non viene allocata.
Il processo è simile durante la creazione di un oggetto . In questo caso, COM+ consente l'attivazione se è disponibile più del 5% della memoria virtuale. Se è disponibile meno del 5%, COM+ procede con un'allocazione di test. Anche in questo caso, se l'allocazione di test espande il file di paging, viene creato l'oggetto . In caso contrario, l'attivazione ha esito negativo.
I livelli di soglia fissi per i controlli di attivazione a memoria ridotta non sono attualmente configurabili. Per questo motivo, a questa funzionalità non sono associate attività.