18#ifndef itkMemoryUsageObserver_h
19#define itkMemoryUsageObserver_h
21#include "itkConfigure.h"
27#if defined(WIN32) || defined(_WIN32)
29# define SUPPORT_TOOLHELP32
30# if defined(SUPPORT_TOOLHELP32)
60#if defined(WIN32) || defined(_WIN32)
64 WindowsMemoryUsageObserver();
66 virtual ~WindowsMemoryUsageObserver();
69 virtual MemoryLoadType
73# if defined(SUPPORT_TOOLHELP32)
74 using PZwQuerySystemInformation = NTSTATUS(WINAPI *)(UINT, PVOID, ULONG, PULONG);
77 HMODULE m_hNTLib{
nullptr };
79 PZwQuerySystemInformation ZwQuerySystemInformation{
nullptr };
89 ~LinuxMemoryUsageObserver()
override;
92 GetMemoryUsage()
override;
101 ~MacOSXMemoryUsageObserver()
override;
104 GetMemoryUsage()
override;
108#if defined(__SUNPRO_CC) || defined(__sun__)
113 virtual ~SunSolarisMemoryUsageObserver();
115 virtual MemoryLoadType
120#if !defined(WIN32) && !defined(_WIN32)
131# if defined(ITK_HAS_MALLINFO) || defined(ITK_HAS_MALLINFO2)
140 ~MallinfoMemoryUsageObserver()
override;
143 GetMemoryUsage()
override;
158#if defined(WIN32) || defined(_WIN32)
159 public WindowsMemoryUsageObserver
160#elif defined(__linux__)
161 public LinuxMemoryUsageObserver
162#elif defined(__SUNPRO_CC) || defined(__sun__)
163 public SunSolarisMemoryUsageObserver
164#elif defined(__APPLE__)
165 public MacOSXMemoryUsageObserver
166#elif defined(__FreeBSD__) || defined(__OpenBSD__)
169 public MallinfoMemoryUsageObserver
SizeValueType MemoryLoadType
virtual MemoryLoadType GetMemoryUsage()=0
virtual ~MemoryUsageObserverBase()
Provides the memory usage of the process.
~MemoryUsageObserver() override
MemoryLoadType GetMemoryUsage() override
~SysResourceMemoryUsageObserver() override
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType