Hoặc ứng dụng của bạn đã sử dụng hết bộ nhớ có sẵn cho nó hoặc bạn gặp sự cố với phân đoạn heap.
Trong trường hợp đầu tiên bạn đã tạo đủ đối tượng để chiếm hết bộ nhớ và bạn vẫn có tham chiếu đến chúng để bộ thu gom rác không thể xóa chúng.
Trong trường hợp thứ hai, phân mảnh heap, bạn đang cố gắng tạo một đối tượng lớn hơn phần tiếp giáp lớn nhất của bộ nhớ trong heap. Điều này hiếm hơn nhưng chắc chắn sẽ xảy ra trong một số trường hợp. Heap bình thường sẽ được nén trong khi chạy gc nhưng heap đối tượng lớn sẽ không.
Có một số tốt article trên MSDN về vùng đối tượng lớn.
Chỉnh sửa: Tôi nhớ một cách khác để thoát khỏi bộ nhớ. Bạn có thể thử và tạo một đối tượng có kích thước lớn hơn 2GB. Đó là kích thước đối tượng tối đa trong .NET ngay cả trên 64-bit.
Nguồn
2009-10-26 10:14:44
Đầu tiên, ít nhất đề cập đến môi trường (nếu có) câu hỏi của bạn là về. Ít nhất. Net và Java có ngoại lệ OOM. Thứ hai, 2) đây thậm chí không phải là một câu hỏi thích hợp. Bạn hỏi gì? Bỏ phiếu để đóng. – sleske
1) Envoirment là .Net C# 2) tại sao ques này là không thích hợp – Buzz
Vâng, câu hỏi 1) một câu hỏi, nhưng như vậy chung rằng nó không thực sự có một câu trả lời có ý nghĩa. 2) không phải là một câu hỏi, và 3) nên ít nhất có được một dấu hỏi. Hãy thử và sử dụng dấu chấm câu và chính tả thích hợp, và quan trọng nhất và đưa ra một số ngữ cảnh. – sleske