La maggioranza delle applicazioni disponibili per uso comune, probabilmente, non se ne preoccupa ma, in particolare per le applicazioni che fanno uso intensivo di video e audio, piuttosto che per applicazioni che rendono disponibili contenuti 3D, ci deve essere un focus particolare al consumo di memoria. Come sappiamo, infatti, non è il garbage collector a salvarci la vita, così come sappiamo che non ci serve per forza di cose utilizzare linguaggi di più basso livello come C++ per imparare a gestire meglio la memoria che è, per ovvie ragioni, limitata.
Sebbene il carico necessario dipenda principalmente dalle applicazioni stesse e dai loro contenuti, possiamo comunque prendere decisioni basate sulla quantità di memoria disponibile per abilitare, o limitare, una determinata logica di business. La quantità di memoria attualmente utilizzata, così come la quantità di memoria massima ancora disponibile sono esposte tramite la classe statica MemoryManager:
var currentUsage = MemoryManager.AppMemoryUsage; var maxMemory = MemoryManager.ExpectedAppMemoryUsageLimit;
Il consumo di memoria può anche essere classificato, per semplicità, secondo diverse categorie (Low, Medium, High e OverLimit) qualora non volessimo (o ci servisse) fare i calcoli per convertire da byte ad una unità di misura differente:
var usageLevel = MemoryManager.AppMemoryUsageLevel
Se si dovesse, invece, aver bisogno di informazioni più dettagliate relative al consumo di memoria per un preciso istante temporale o un determinato processo, si può fare riferimento ai metodi GetAppMemoryReport e GetProcessMemoryReport. Un uso improvviso elevato della memoria può essere invece rilevato tramite l'evento AppMemoryUsageLimitChanging.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Utilizzare gRPC su App Service di Azure
Aggiornare a .NET 9 su Azure App Service
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione dei nomi con le regole @layer in CSS
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Utilizzare QuickGrid di Blazor con Entity Framework
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Collegare applicazioni server e client con .NET Aspire
Utilizzare una qualunque lista per i parametri di tipo params in C#
Referenziare un @layer più alto in CSS
Eseguire query manipolando liste di tipi semplici con Entity Framework Core