如何在c#中执行此操作,c ++中的一个示例是:
void PrintMemoryInfo( DWORD processID )
{
std::ofstream fs("d:\\processInfo.txt");
fs<<"Information of Process:\n";
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
fs<<"\nProcess ID: %u\n"<<processID;
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (NULL == hProcess) return;
if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) ) {
fs<< "\tPageFaultCount: 0x%08X\n" << pmc.PageFaultCount;
fs<< "\tYour app's PEAK MEMORY CONSUMPTION: 0x%08X\n"<<pmc.PeakWorkingSetSize;
fs<< "\tYour app's CURRENT MEMORY CONSUMPTION: 0x%08X\n"<< pmc.WorkingSetSize;
fs<< "\tQuotaPeakPagedPoolUsage: 0x%08X\n"<<
pmc.QuotaPeakPagedPoolUsage;
fs<< "\tQuotaPagedPoolUsage: 0x%08X\n"<<
pmc.QuotaPagedPoolUsage;
fs<< "\tQuotaPeakNonPagedPoolUsage: 0x%08X\n"<<
pmc.QuotaPeakNonPagedPoolUsage;
fs<< "\tQuotaNonPagedPoolUsage: 0x%08X\n"<<
pmc.QuotaNonPagedPoolUsage;
fs<< "\tPagefileUsage: 0x%08X\n"<< pmc.PagefileUsage;
fs<< "\tPeakPagefileUsage: 0x%08X\n"<<
pmc.PeakPagefileUsage;
}
fs.close();
CloseHandle( hProcess);
}
int main( )
{
PrintMemoryInfo( GetCurrentProcessId() );
return 0;
}
但在c#?...
答案 0 :(得分:1)
以下是一些描述获取正在运行的应用程序内存占用的文章:
Poll C# app's memory usage at runtime?
TL; DR;
// get the current process
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
// get the physical mem usage
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
答案 1 :(得分:0)
您应该可以使用System.Diagnostics.Process类来执行此操作。 请看看: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx