thỉnh thoảng nhận các ngoại lệ OutOfMemory từ một ứng dụng .NET bận rộn
Câu trả lời cho điều này là quá phức tạp để phù hợp với một câu trả lời. Xem " Điều chỉnh hiệu suất ứng dụng .NET " để biết cách xử lý hoàn toàn đối tượng.
Đây là một bản tóm tắt cực kỳ đơn giản (nhưng vẫn khá tốt) từ Bruno Jouhier :
Hơn nữa, thời gian chạy .NET không cho phép bạn tăng tới 2 GB. Trình thu gom rác hoạt động bằng cách sao chép các đối tượng sống, vì vậy nó cần một không gian hợp lý để thực hiện các bản sao của nó.
Biên tập:
Đây là nỗ lực của tôi để giải thích ...
Nếu bạn đang tự hỏi kích thước bộ nhớ xử lý công nhân tối đa (như được báo cáo bởi Trình quản lý tác vụ) là gì cho Quy trình công nhân ASP.NET trên x86, thì câu trả lời là "nó phụ thuộc" .
Trong bất kỳ loại mã được quản lý nào như Java hoặc .NET, lập trình viên sẽ từ bỏ quyền kiểm soát bộ nhớ chi tiết để làm việc để không phải đối phó với các con trỏ. Khi một chương trình thực thi, Heap và Stack sẽ được dọn sạch định kỳ bởi Garbage Collector .
Cụ thể liên quan đến ASP.NET, trình thu gom rác chạy bên trong quy trình worker giống như trang web. Các GC tiêu thụ bộ nhớ của riêng mình. Bao nhiêu bộ nhớ hoàn toàn là một chức năng về cách viết mã ứng dụng của bạn. Một ứng dụng có thể sử dụng 1,8 GB bộ nhớ trong khi một ứng dụng khác có thể bị sặc ở mức 500MB. Để hiểu lý do tại sao , bạn cần phải lập hồ sơ ứng dụng cụ thể của bạn.