làm cách nào để biết có bao nhiêu đối tượng được tạo ra trong một lớp trong C#làm cách nào tôi có thể tìm ra số lượng đối tượng được tạo ra của một lớp trong C#
5
A
Trả lời
13
Bạn sẽ phải đặt một bộ đếm tĩnh được tăng lên xây dựng:
public class Foo
{
private static long instanceCount;
public Foo()
{
// Increment in atomic and thread-safe manner
Interlocked.Increment(ref instanceCount);
}
}
một vài lưu ý:
- này không đếm số hiện trong bộ nhớ trường - đó sẽ bao gồm có một finalizer để decr ement quầy; Tôi sẽ không đề nghị rằng
- Điều này sẽ không bao gồm các trường hợp được tạo thông qua một số cơ chế như serialization có thể bỏ qua một nhà xây dựng
- Rõ ràng điều này chỉ hoạt động nếu bạn có thể sửa đổi lớp học; bạn không thể tìm ra số lượng ví dụ của
System.String
được tạo, ví dụ - ít nhất là không phải tham gia vào API gỡ lỗi/lược tả
Tại sao bạn muốn thông tin này, không quan tâm?
1
Đây có phải là lớp học mà bạn đã thiết kế không?
Nếu có, hãy thêm bộ đếm vào lớp được tăng lên trong hàm tạo và được giảm dần trong Vứt bỏ.
Có khả năng bạn có thể đặt bộ đếm hiệu suất này để bạn có thể theo dõi nó trong Trình giám sát hiệu suất.
Các vấn đề liên quan
- 1. Làm thế nào tôi có thể tìm ra serialVersionUID của một đối tượng Java được tuần tự hóa?
- 2. Làm thế nào để tạo ra một đối tượng (lớp) có thể xử lý được trong D?
- 3. Làm cách nào tôi có thể tìm hiểu đối số kiểu thực của một lớp chung?
- 4. Làm thế nào tôi có thể tạo ra các đối tượng json trống trong python
- 5. iterating trên đối tượng thể hiện của một lớp học được đưa ra trong Python
- 6. Làm thế nào tôi có thể xem cách một lớp C++ được đặt ra trong bộ nhớ với gdb?
- 7. Làm thế nào để mockito tạo ra một thể hiện của đối tượng giả
- 8. Làm thế nào tôi có thể tìm ra bao nhiêu bộ nhớ được cấp phát cho một đối tượng javascript?
- 9. Tìm hiểu số lượng bộ nhớ đang được sử dụng bởi một đối tượng trong C#?
- 10. Activator.CreateInstance - Cách tạo ra các thể hiện của các lớp có các hàm tạo tham số
- 11. Làm thế nào tôi có thể tìm ra Javascript nào gây ra một yêu cầu Ajax?
- 12. Làm cách nào tôi có thể tìm ra 500 lỗi nào tôi nhận được ở Django?
- 13. làm thế nào để đếm số lượng các đối tượng được tạo trong C++
- 14. node.js internals: Làm thế nào tôi có thể tìm ra nơi `process.binding ('eval')` được định nghĩa?
- 15. Làm thế nào tôi có thể tạo một vùng trăn số lượng lớn của datetime
- 16. Khai báo một đối tượng ngay cả trước khi lớp đó được tạo ra
- 17. C#: Có cách nào LINQ để tạo một mảng các đối tượng được đưa ra một mảng các tham số của hàm tạo không?
- 18. Trình tạo ID cho các đối tượng được tạo ra
- 19. Trong C#, Làm cách nào tôi có thể tạo đối tượng System.Drawing.Color bằng giá trị hex?
- 20. Làm thế nào để ngăn chặn một đối tượng được tạo ra trên heap?
- 21. Làm thế nào để tạo ra đối tượng toàn cầu trong một thư viện C#
- 22. Làm thế nào tôi có thể tìm thấy OWNER của một đối tượng trong Oracle?
- 23. Khi nào Spring tạo ra các đối tượng của các đối tượng được tiêm
- 24. Những ngoại lệ nào có thể tạo ra một tham chiếu dịch vụ được tạo ra?
- 25. Làm thế nào để tạo ra một đối tượng Null trong C#
- 26. Làm thế nào để có được một enum được tạo ra trong attrs.xml trong mã số
- 27. Làm thế nào tôi có thể mở rộng một đối tượng bằng ruby với một mô-đun có tên được đưa ra trong một tham số?
- 28. Làm thế nào để tạo ra một thể hiện của lớp vô danh lớp trừu tượng trong Kotlin?
- 29. Làm thế nào tôi có thể nhận được kích thước của một đối tượng trong HttpRuntime.Cache?
- 30. Làm thế nào để tìm ra nếu một đối tượng bị khóa? C#
Làm thế nào về 'Interlocked.Decrement (ref instanceCount)' trong destructor của đối tượng? Sau đó 'instanceCount' sẽ đưa ra ước tính về các cá thể đối tượng đang sống. – user
Đồng ý, sẽ hữu ích khi giảm dần bên trong trình phá hủy để hoàn tất. '~ Foo() {Interlocked.Decrement (ref instanceCount); } '@ JonSkeet, tại sao bạn không khuyên bạn nên (không quan tâm)? – defines
@defines: Bởi vì đó là việc đếm một cái gì đó khác nhau - đó là đếm bao nhiêu đối tượng chưa được hoàn thành. OP đã yêu cầu số lượng đối tượng đã được tạo. Nếu tôi tạo 100 và tất cả chúng được hoàn thành/GC'd, tôi vẫn tạo 100 đối tượng. –