Bất cứ lúc nào bạn đang làm việc với một mảng lớn này, có lẽ bạn nên cố gắng tìm một giải pháp tốt hơn để vấn đề. Nhưng điều đó đang được nói là tôi vẫn cố gắng trả lời câu hỏi của bạn.
Như đã đề cập trong điều này article có giới hạn 2 GB đối với mọi đối tượng trong .Net. Đối với tất cả x86, x64 và IA64.
Như với Windows 32-bit hoạt động hệ thống, có một giới hạn 2 GB vào kích thước của một đối tượng, bạn có thể tạo ra trong khi chạy một phiên bản 64-bit quản lý ứng dụng trên hệ điều hành Windows 64-bit.
Ngoài ra nếu bạn xác định một mảng quá lớn trên ngăn xếp, bạn sẽ bị tràn ngăn xếp. Nếu bạn định nghĩa mảng trên heap, nó sẽ cố gắng phân bổ tất cả trong một khối liên tục lớn. Nó sẽ là tốt hơn để sử dụng một ArrayList có phân bổ động tiềm ẩn trên heap. Điều này sẽ không cho phép bạn vượt qua 2GB, nhưng có lẽ sẽ cho phép bạn tiến gần hơn đến nó.
Tôi nghĩ giới hạn kích thước ngăn xếp sẽ lớn hơn nếu bạn đang sử dụng kiến trúc và hệ điều hành x64 hoặc IA64. Sử dụng x64 hoặc IA64, bạn sẽ có bộ nhớ phân bổ 64 bit thay vì 32 bit.
Nếu bạn không thể phân bổ danh sách mảng cùng một lúc, bạn có thể phân bổ nó trong các phần.
Sử dụng danh sách mảng và thêm 1 đối tượng cùng lúc trên máy x64 Windows 2008 có RAM 6 GB, nhiều nhất tôi có thể lấy ArrayList là kích thước: 134217728. Vì vậy, tôi thực sự nghĩ bạn phải tìm một giải pháp tốt hơn cho vấn đề của bạn không sử dụng nhiều bộ nhớ. Có thể ghi vào một tập tin thay vì sử dụng RAM.
Nguồn
2009-02-21 20:33:01
Nếu bạn đang cố gắng để tạo ra một mảng như vậy để giải quyết một dự án vấn đề Euler, sau đó tôi nghĩ rằng bạn đã chọn một chiến lược giải pháp kém cho vấn đề này. (Dunno nếu có thể tạo mảng lớn hơn trên x64, hy vọng ai đó sẽ trả lời thực sự cho câu hỏi .Net của bạn.) – Brian
Vâng, tôi biết đó là trường hợp (lại: chiến lược) nhưng tôi đã bị sốc khi tôi đạt đến giới hạn! – inspite
Tôi hỏi cùng một câu hỏi trước đó, không thể có được câu trả lời hoàn chỉnh, hy vọng bạn sẽ có được một câu trả lời để khắc phục vấn đề này .. http://stackoverflow.com/questions/494923/numbers-that-exceeds-basic-types-in-c – Canavar