![]() |
VOOZH | about |
dotnet add package MemStat.Net --version 0.1.4
NuGet\Install-Package MemStat.Net -Version 0.1.4
<PackageReference Include="MemStat.Net" Version="0.1.4" />
<PackageVersion Include="MemStat.Net" Version="0.1.4" />Directory.Packages.props
<PackageReference Include="MemStat.Net" />Project file
paket add MemStat.Net --version 0.1.4
#r "nuget: MemStat.Net, 0.1.4"
#:package MemStat.Net@0.1.4
#addin nuget:?package=MemStat.Net&version=0.1.4Install as a Cake Addin
#tool nuget:?package=MemStat.Net&version=0.1.4Install as a Cake Tool
Get memory statistics of a process in .NET
it works on Windows, Linux and MacOS.
GlobalMemoryStatusEx from kernel32.dll
free command and parse it.
vm_stat command and parse it.
// you can add to DI container.
builder.Services.AddMemoryUsageFinder();
// Railway Oriented Programming way of using MemoryUsageFinder
app.MapGet(
"/memoryusage",
([FromServices] IMemoryUsageFinder memoryUsageFinder) => memoryUsageFinder
.ReceiveCurrentMemoryUsage()
.Conveyor(_ => memoryUsageFinder.GetTotalMemoryUsage())
.Combine(_ => memoryUsageFinder.GetMemoryUsagePercentage())
.Remap((total, percent) => new MemoryInfo(total, percent))
.Match(some => Results.Ok(some), error => Results.Ok(error.Message)));
internal record MemoryInfo(double TotalMemory, double MemoryUsagePercentage);
// Normal way of using MemoryUsageFinder
var memoryUsageFinder = serviceProvider.GetRequiredService<IMemoryUsageFinder>() ?? throw new InvalidOperationException("IMemoryUsageFinder is not registered");
memoryUsageFinder.ReceiveCurrentMemoryUsage();
var totalMemory = memoryUsageFinder.GetTotalMemoryUsage();
var memoryUsagePercentage = memoryUsageFinder.GetMemoryUsagePercentage();
// note : totalMemory and memoryUsagePercentage are in Result Type using ResultBox and double type.
if (totalMemory.IsSuccess)
{
Console.WriteLine($"Total Memory : {totalMemory.GetValue()}");
}
if (memoryUsagePercentage.IsSuccess)
{
Console.WriteLine($"Memory Usage Percentage : {memoryUsagePercentage.GetValue()}");
}
// you can also use it without DI
var memoryUsageFinder = new MemoryUsageFinder();
memoryUsageFinder.ReceiveCurrentMemoryUsage();
console.WriteLine(memoryUsageFinder.GetTotalMemoryUsage().UnwrapBox());
console.WriteLine(memoryUsageFinder.GetMemoryUsagePercentage().UnwrapBox());
// If you know you are using Windows, Linux or MacOS, you can use specific implementation.
var memoryUsageFinder = new WindowsMemoryUsageFinder();
// or var memoryUsageFinder = new LinuxMemoryUsageFinder();
// or var memoryUsageFinder = new MacOSMemoryUsageFinder();
console.WriteLine(memoryUsageFinder.GetTotalMemoryUsage().UnwrapBox());
console.WriteLine(memoryUsageFinder.GetMemoryUsagePercentage().UnwrapBox());
Before either GetMemoryUsagePercentage() or GetTotalMemoryUsage(), ReceiveCurrentMemoryUsage() must be
called.
GetMemoryUsagePercentage() returns 0 to 1 value. 1 means 100% memory usage. Sometime it may be more than 1.0.
GetTotalMemoryUsage() returns total memory usage in bytes.
dotnet add package MemStat.Net
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.