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
Reactive form tipizzati con modellazione del FormBuilder in Angular
Sfruttare al massimo i topic space di Event Grid MQTT
Definire stili a livello di libreria in Angular
Implementare il throttling in ASP.NET Core
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Inizializzare i container in Azure Container Apps
Utilizzare Model as a Service su Microsoft Azure
Utilizzare la session affinity con Azure Container Apps
Limitare le richieste lato server con l'interactive routing di Blazor 8
Controllare gli accessi IP alle app con Azure Container Apps
Eseguire le GitHub Actions offline
Evitare la command injection in un workflow di GitHub