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
Creare un component che renderizza una lista in JSX
Filtrare i dati di una Include con Entity Framework Core 5
Il futuro delle applicazioni Windows con .NET 5
Creare un effetto di ombra sui controlli della Universal Windows Platform
Messaggi in tempo reale con Blazor Server
Usare gRPC come infrastruttura per i nostri servizi web
Condividere una variabile tra job in una pipeline YAML di Azure DevOps
Elencare gli utenti loggati con Blazor Server
Estensioni personalizzate per le pipeline di Azure DevOps e GitHub con .NET 5
Hidden gems in Azure SQL that will make every developer want to use it!
Creare un radio button per Blazor
Chiamare API WinRT da applicazioni .NET 5