Đối với các loại không được quản lý hay còn gọi là loại giá trị, cấu trúc:
Marshal.SizeOf(object);
Đối với các đối tượng được quản lý, giá trị gần hơn của tôi là một con số gần đúng.
long start_mem = GC.GetTotalMemory(true);
aclass[] array = new aclass[1000000];
for (int n = 0; n < 1000000; n++)
array[n] = new aclass();
double used_mem_median = (GC.GetTotalMemory(false) - start_mem)/1000000D;
Không sử dụng tuần tự hóa. Một trình định dạng nhị phân thêm tiêu đề, vì vậy bạn có thể thay đổi lớp của mình và tải tệp được tuần tự hóa cũ vào lớp đã sửa đổi.
Ngoài ra, nó sẽ không cho bạn biết kích thước thực trong bộ nhớ cũng như sẽ không tính đến việc căn chỉnh bộ nhớ.
[Chỉnh sửa] Bằng cách sử dụng BiteConverter.GetBytes (prop-value) theo tuần hoàn trên mọi thuộc tính của lớp, bạn sẽ nhận được nội dung theo byte, không tính trọng lượng của lớp hoặc các tham chiếu nhưng gần với thực tế hơn nhiều. Tôi khuyên bạn nên sử dụng một mảng byte cho dữ liệu và một lớp proxy không được quản lý để truy cập các giá trị bằng cách sử dụng truyền con trỏ nếu kích thước quan trọng, lưu ý rằng đó sẽ là bộ nhớ không được căn chỉnh nên trên các máy tính cũ sẽ chậm nhưng bộ dữ liệu LỚN trên RAM HIỆN ĐẠI sẽ nhanh hơn đáng kể, vì giảm thiểu kích thước để đọc từ RAM sẽ có tác động lớn hơn so với không điều chỉnh.