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 operazioni con timeout in React
Short-circuiting della Pipeline in ASP.NET Core
Ricevere avvisi su metriche dei server Azure Arc
Eseguire attività basate su eventi con Azure Container Jobs
Implementare il throttling in ASP.NET Core
Eseguire le GitHub Actions offline
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Gestire liste di tipi semplici con Entity Framework Core
Creare un'applicazione React e configurare Tailwind CSS
Gestire i null nelle reactive form tipizzate di Angular
Generare file PDF da Blazor WebAssembly con iText