Process.PeakWorkingSet64 Property

Gets the maximum amount of physical memory used by the associated process.

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)

<MonitoringDescriptionAttribute("ProcessPeakWorkingSet")> _
<ComVisibleAttribute(False)> _
Public ReadOnly Property PeakWorkingSet64 As Long

Property Value

Type: System.Int64
The maximum amount of physical memory, in bytes, allocated for the associated process since it was started.


The platform is Windows 98 or Windows Millennium Edition (Windows Me), which does not support this property.

The value returned by this property represents the maximum size of working set memory used by the process since it started. The working set of a process is the set of memory pages currently visible to the process in physical RAM memory. These pages are resident and available for an application to use without triggering a page fault.

The working set includes both shared and private data. The shared data includes the pages that contain all the instructions that the process executes, including instructions from the process modules and the system libraries.

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 Working Set Peak performance counter for the process.

Windows 98, Windows Millennium Edition Platform Note: This property is not supported on Windows 98 or Windows Millennium Edition (Windows Me).

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.

Imports System
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

            Dim myProcess As Process = Nothing 


                ' Start the process.
                myProcess = Process.Start("NotePad.exe")

                ' Display process statistics until 
                ' the user closes the program. 

                    If Not myProcess.HasExited Then 

                        ' Refresh the current process property values.


                        ' Display current process statistics.

                        Console.WriteLine("{0} -", myProcess.ToString())

                        Console.WriteLine("  physical memory usage: {0}", _
                        Console.WriteLine("  base priority: {0}", _
                        Console.WriteLine("  priority class: {0}", _
                        Console.WriteLine("  user processor time: {0}", _
                        Console.WriteLine("  privileged processor time: {0}", _
                        Console.WriteLine("  total processor time: {0}", _
                        Console.WriteLine("  PagedSystemMemorySize64: {0}", _
                        Console.WriteLine("  PagedMemorySize64: {0}", _

                        ' 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")
                            Console.WriteLine("Status = Not Responding")
                        End If 
                    End If 
                Loop While Not myProcess.WaitForExit(1000)

                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}", _
                Console.WriteLine("Peak paged memory usage of the process: {0}", _
                Console.WriteLine("Peak virtual memory usage of the process: {0}", _

                If Not myProcess Is Nothing Then
                End If 
            End Try 
        End Sub 'Main
    End Class 
End Namespace

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

  • LinkDemand 

    for full trust for the immediate caller. This member cannot be used by partially trusted code.

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2014 Microsoft