Process.NonpagedSystemMemorySize64 Property
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Gets the amount of nonpaged system memory, in bytes, allocated for the associated process.
public:
property long NonpagedSystemMemorySize64 { long get(); };
public long NonpagedSystemMemorySize64 { get; }
[System.Runtime.InteropServices.ComVisible(false)]
public long NonpagedSystemMemorySize64 { get; }
member this.NonpagedSystemMemorySize64 : int64
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.NonpagedSystemMemorySize64 : int64
Public ReadOnly Property NonpagedSystemMemorySize64 As Long
The amount of system memory, in bytes, allocated for the associated process that cannot be written to the virtual memory paging file.
- Attributes
The following code example starts an instance of the Notepad application. The example then retrieves and displays various properties of the associated process. The example detects when the process exits, and displays its exit code and peak memory statistics.
#using <system.dll>
using namespace System;
using namespace System::Diagnostics;
int main()
{
// Define variables to track the peak
// memory usage of the process.
_int64 peakPagedMem = 0,peakWorkingSet = 0,peakVirtualMem = 0;
Process^ myProcess = nullptr;
try
{
// Start the process.
myProcess = Process::Start( "NotePad.exe" );
// Display the process statistics until
// the user closes the program.
do
{
if ( !myProcess->HasExited )
{
// Refresh the current process property values.
myProcess->Refresh();
Console::WriteLine();
// Display current process statistics.
Console::WriteLine( "{0} -", myProcess );
Console::WriteLine( "-------------------------------------" );
Console::WriteLine( " physical memory usage: {0}", myProcess->WorkingSet64 );
Console::WriteLine( " base priority: {0}", myProcess->BasePriority );
Console::WriteLine( " priority class: {0}", myProcess->PriorityClass );
Console::WriteLine( " user processor time: {0}", myProcess->UserProcessorTime );
Console::WriteLine( " privileged processor time: {0}", myProcess->PrivilegedProcessorTime );
Console::WriteLine( " total processor time: {0}", myProcess->TotalProcessorTime );
Console::WriteLine(" PagedSystemMemorySize64: {0}", myProcess->PagedSystemMemorySize64);
Console::WriteLine(" PagedMemorySize64: {0}", myProcess->PagedMemorySize64);
// Update the values for the overall peak memory statistics.
peakPagedMem = myProcess->PeakPagedMemorySize64;
peakVirtualMem = myProcess->PeakVirtualMemorySize64;
peakWorkingSet = myProcess->PeakWorkingSet64;
if ( myProcess->Responding )
{
Console::WriteLine( "Status = Running" );
}
else
{
Console::WriteLine( "Status = Not Responding" );
}
}
}
while ( !myProcess->WaitForExit( 1000 ) );
Console::WriteLine();
Console::WriteLine( "Process exit code: {0}", myProcess->ExitCode );
// Display peak memory statistics for the process.
Console::WriteLine( "Peak physical memory usage of the process: {0}", peakWorkingSet );
Console::WriteLine( "Peak paged memory usage of the process: {0}", peakPagedMem );
Console::WriteLine( "Peak virtual memory usage of the process: {0}", peakVirtualMem );
}
finally
{
if ( myProcess != nullptr )
{
myProcess->Close();
}
}
}
using System;
using System.Diagnostics;
namespace ProcessSample
{
class ProcessMonitorSample
{
public static void Main()
{
// Define variables to track the peak
// memory usage of the process.
long peakPagedMem = 0,
peakWorkingSet = 0,
peakVirtualMem = 0;
// Start the process.
using (Process myProcess = Process.Start("NotePad.exe"))
{
// Display the process statistics until
// the user closes the program.
do
{
if (!myProcess.HasExited)
{
// Refresh the current process property values.
myProcess.Refresh();
Console.WriteLine();
// Display current process statistics.
Console.WriteLine($"{myProcess} -");
Console.WriteLine("-------------------------------------");
Console.WriteLine($" Physical memory usage : {myProcess.WorkingSet64}");
Console.WriteLine($" Base priority : {myProcess.BasePriority}");
Console.WriteLine($" Priority class : {myProcess.PriorityClass}");
Console.WriteLine($" User processor time : {myProcess.UserProcessorTime}");
Console.WriteLine($" Privileged processor time : {myProcess.PrivilegedProcessorTime}");
Console.WriteLine($" Total processor time : {myProcess.TotalProcessorTime}");
Console.WriteLine($" Paged system memory size : {myProcess.PagedSystemMemorySize64}");
Console.WriteLine($" Paged memory size : {myProcess.PagedMemorySize64}");
// Update the values for the overall peak memory statistics.
peakPagedMem = myProcess.PeakPagedMemorySize64;
peakVirtualMem = myProcess.PeakVirtualMemorySize64;
peakWorkingSet = myProcess.PeakWorkingSet64;
if (myProcess.Responding)
{
Console.WriteLine("Status = Running");
}
else
{
Console.WriteLine("Status = Not Responding");
}
}
}
while (!myProcess.WaitForExit(1000));
Console.WriteLine();
Console.WriteLine($" Process exit code : {myProcess.ExitCode}");
// Display peak memory statistics for the process.
Console.WriteLine($" Peak physical memory usage : {peakWorkingSet}");
Console.WriteLine($" Peak paged memory usage : {peakPagedMem}");
Console.WriteLine($" Peak virtual memory usage : {peakVirtualMem}");
}
}
}
}
open System.Diagnostics
// Define variables to track the peak
// memory usage of the process.
let mutable peakPagedMem = 0L
let mutable peakWorkingSet = 0L
let mutable peakVirtualMem = 0L
// Start the process.
use myProcess = Process.Start "NotePad.exe"
// Display the process statistics until
// the user closes the program.
while myProcess.WaitForExit 1000 |> not do
if not myProcess.HasExited then
// Refresh the current process property values.
myProcess.Refresh()
printfn ""
// Display current process statistics.
printfn $"{myProcess} -"
printfn "-------------------------------------"
printfn $" Physical memory usage : {myProcess.WorkingSet64}"
printfn $" Base priority : {myProcess.BasePriority}"
printfn $" Priority class : {myProcess.PriorityClass}"
printfn $" User processor time : {myProcess.UserProcessorTime}"
printfn $" Privileged processor time : {myProcess.PrivilegedProcessorTime}"
printfn $" Total processor time : {myProcess.TotalProcessorTime}"
printfn $" Paged system memory size : {myProcess.PagedSystemMemorySize64}"
printfn $" Paged memory size : {myProcess.PagedMemorySize64}"
// Update the values for the overall peak memory statistics.
peakPagedMem <- myProcess.PeakPagedMemorySize64
peakVirtualMem <- myProcess.PeakVirtualMemorySize64
peakWorkingSet <- myProcess.PeakWorkingSet64
if myProcess.Responding then
printfn "Status = Running"
else
printfn "Status = Not Responding"
printfn ""
printfn $" Process exit code : {myProcess.ExitCode}"
// Display peak memory statistics for the process.
printfn $" Peak physical memory usage : {peakWorkingSet}"
printfn $" Peak paged memory usage : {peakPagedMem}"
printfn $" Peak virtual memory usage : {peakVirtualMem}"
Imports System.Diagnostics
Namespace ProcessSample
Class ProcessMonitorSample
Public Shared Sub Main()
' Define variables to track the peak
' memory usage of the process.
Dim peakPagedMem As Long = 0
Dim peakWorkingSet As Long = 0
Dim peakVirtualMem As Long = 0
' Start the process.
Using myProcess = Process.Start("NotePad.exe")
' Display process statistics until
' the user closes the program.
Do
If Not myProcess.HasExited Then
' Refresh the current process property values.
myProcess.Refresh()
Console.WriteLine()
' Display current process statistics.
Console.WriteLine($"{myProcess} -")
Console.WriteLine("-------------------------------------")
Console.WriteLine($" Physical memory usage : {myProcess.WorkingSet64}")
Console.WriteLine($" Base priority : {myProcess.BasePriority}")
Console.WriteLine($" Priority class : {myProcess.PriorityClass}")
Console.WriteLine($" User processor time : {myProcess.UserProcessorTime}")
Console.WriteLine($" Privileged processor time : {myProcess.PrivilegedProcessorTime}")
Console.WriteLine($" Total processor time : {myProcess.TotalProcessorTime}")
Console.WriteLine($" Paged system memory size : {myProcess.PagedSystemMemorySize64}")
Console.WriteLine($" Paged memory size : {myProcess.PagedMemorySize64}")
' Update the values for the overall peak memory statistics.
peakPagedMem = myProcess.PeakPagedMemorySize64
peakVirtualMem = myProcess.PeakVirtualMemorySize64
peakWorkingSet = myProcess.PeakWorkingSet64
If myProcess.Responding Then
Console.WriteLine("Status = Running")
Else
Console.WriteLine("Status = Not Responding")
End If
End If
Loop While Not myProcess.WaitForExit(1000)
Console.WriteLine()
Console.WriteLine($" Process exit code : {myProcess.ExitCode}")
' Display peak memory statistics for the process.
Console.WriteLine($" Peak physical memory usage of the process : {peakWorkingSet}")
Console.WriteLine($" Peak paged memory usage of the process : {peakPagedMem}")
Console.WriteLine($" Peak virtual memory usage of the process : {peakVirtualMem}")
End Using
End Sub
End Class
End Namespace
The value returned by this property represents the most recently refreshed size of nonpaged system memory used by the process, in bytes. To get the most up to date size, you need to call Refresh() method first.
System memory is the physical memory used by the operating system, and is divided into paged and nonpaged pools. Nonpaged memory allocations remain in system memory and are not paged out to the virtual memory paging file.
This property can be used to monitor memory usage on computers with 32-bit processors or 64-bit processors. The property value is equivalent to the Pool Nonpaged Bytes performance counter for the process.
Product | Versions |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0, 2.1 |
.NET feedback
.NET is an open source project. Select a link to provide feedback: