-1

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 プロファイルを試しましたが、アプリケーション内で実現するにはサンプル コードが本当に必要です。

どうもありがとうございました。

4

1 に答える 1

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();

            }
        }
    }
}

ソース

于 2013-07-25T17:11:59.547 に答える