在c#中获取内存空间

时间:2012-03-21 05:38:40

标签: c# visual-studio memory

如何在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#?...

2 个答案:

答案 0 :(得分:1)

以下是一些描述获取正在运行的应用程序内存占用的文章:

Poll C# app's memory usage at runtime?

Memory usage in C#

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