在C#中获取进程内存分配(内存中的对象)详细信息

时间:2013-07-25 15:03:29

标签: c# winforms memory-management

我们有C#.Net windows应用程序,从这个应用程序我需要跟踪当前正在运行的进程的内存和CPU使用情况详细信息。我尝试了下面提到的代码来获取内存细节。

Process curProcess=Process.GetCurrentProcess();

Console.Writeline(curProcess.PrivateMemorySize64);

Console.Writeline(curProcess.VirtualMemorySize64);

Console.Writeline(curProcess.PagedMemorySize64);

Console.Writeline(curProcess.NonpagedSystemMemorySize64);

var counter = new PerformanceCounter("Process", "Working Set - Private", Process.GetCurrentProcess().ProcessName);

Console.Writeline(curProcess.PagedMemorySize64);

Console.Writeline(counter.RawValue);

以上所有代码都给出了整个进程的内存详细信息,但我的要求是获取以下详细信息,

  • 内存中对象列表和相应对象的内存分配
  • 垃圾收集器收集的内存量,
  • 未处置对象计数及其名称
  • 处理线程及其关系。

    请向我发送一些代码示例以满足我的要求。

注意:我尝试了CLR配置文件和ANTS配置文件以获取有关内存的详细信息,但我确实需要示例代码才能在我的应用程序中实现。

非常感谢。

1 个答案:

答案 0 :(得分:0)

获取有关处理器,操作系统等的信息:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;

namespace HaardDiskInfoCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ManagementObjectSearcher mosProcessor = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");

            foreach (ManagementObject moProcessor in mosProcessor.Get())
            {

                if(moProcessor["maxclockspeed"]!=null)
                    lblPMCSpeed.Text = moProcessor["maxclockspeed"].ToString();
                if(moProcessor["datawidth"]!=null)
                    lblPDataWidth.Text = moProcessor["datawidth"].ToString();
                if(moProcessor["name"]!=null)
                    lblPName.Text=moProcessor["name"].ToString();
                if(moProcessor["manufacturer"]!=null)
                    lblPManufacture.Text = moProcessor["manufacturer"].ToString();

            }
        }
    }
}

Source