var a = new double[7000,7000];
FillValue(a,3);
Dường như .Net không thực sự cấp phát bất kỳ bộ nhớ nào cho a
sau khi thực hiện dòng đầu tiên. Chỉ khi nó đang chạy cuộc gọi FillValue
thì nó dần dần ăn bộ nhớ. (khoảng 400MB)tại sao không .net cấp phát bộ nhớ khi khởi tạo mảng 2d?
Có ai có thể cung cấp thêm thông tin chi tiết về nó không? Tôi nghĩ rằng a
được lấp đầy với 0 sau khi khởi tạo mặc định, làm thế nào nó có thể không có bộ nhớ nào cả?
Bạn đo lường xem nó có cấp phát bộ nhớ không? –
@SethCarnegie thật đáng buồn, tôi đã sử dụng một cách rất thô lỗ ... chỉ cần nhìn vào cửa sổ công việc quản lý .. và thiết lập điểm break, chạy một vài lần trong một vòng lặp. Đó là bộ nhớ 400MB cho mỗi 'fill' rất dễ nhận biết. – colinfang
Điều này cũng có thể là do hệ điều hành. Xem "Kết hợp bộ nhớ" http://blogs.msdn.com/b/b8/archive/2011/10/07/reducing-runtime-memory-in-windows-8.aspx –