2009-02-27 24 views
6

Tôi muốn viết một ứng dụng đơn giản theo dõi việc sử dụng bộ nhớ hiện tại của nó, số đối tượng đã tạo vv .. Trong C++, tôi thường ghi đè toán tử mới, nhưng vì lý do hiển nhiên, tôi không thể thực hiện điều này trong C#. Có cách nào để làm điều này mà không sử dụng một hồ sơ?Có thể theo dõi việc sử dụng bộ nhớ trong một ứng dụng C# mà không cần sử dụng trình thu thập thông tin không?

Trả lời

3

Bạn có thể muốn bắt đầu với Trình thu gom rác. MSDN có một số thành viên được liệt kê here có thể chỉ cho bạn cách thực hiện một số điều, như nhận được tổng số bộ nhớ mà nó cho là được phân bổ, số lần GC đã thu thập được. Bất cứ điều gì cao cấp hơn thế, giống như nhận được một số đối tượng của hội đồng nạp của bạn và bạn sẽ có thể sử dụng một hồ sơ hoặc viết một cái gì đó chính mình.

1

Bộ đếm hiệu suất bộ nhớ .NET sẽ cung cấp cho bạn thông tin tổng hợp, nhưng không bao gồm bộ đếm đối tượng. Cho rằng bạn sẽ cần một hồ sơ.

1

Sử dụng WMI thử:

Để có được sử dụng quá trình (W2K3/2K8):

"SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='process_name.exe'" 

Để xác định trang web của bạn sử dụng này:

"SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='process_name.exe'" 

Sử dụng công cụ này cho WQL teste

Hoặc sử dụng công cụ PerfMon.

Để biết thêm thông tin về bộ đếm, hãy xem Windows System Resource Manager Accounting, ở cuối tài liệu.

Chúc may mắn.

Các vấn đề liên quan