Chúng tôi có dịch vụ cửa sổ 32 bit rò rỉ bộ nhớ - Ngoại lệ OutOfMemory được ném. Nó là .net 4.0 thực thi chạy trên windows server 2003. Trong khi gỡ rối các tệp kết xuất sự cố bằng cách sử dụng WinDbg, tôi thấy rằng hầu hết bộ nhớ thực sự được bảo lưu và không được cam kết. Có thể đặt trước bộ nhớ gây ra ngoại lệ Hết bộ nhớ
Như bạn có thể thấy từ ảnh chụp màn hình WinDbg, có 2,5 Gb sử dụng bộ nhớ chưa được phân loại và hầu hết trong số đó là 2,1 Gb thực sự là bộ nhớ dành riêng (MEM_RESERVE). Tôi có kinh nghiệm gỡ lỗi bãi rác, nhưng kịch bản này là một cái gì đó mới với tôi. MEM_COMMIT là bỏ thuốc lá OK - 564,270 Mb, quản lý kích thước heap là abt 82 Mb
Tôi cũng kiểm tra đống bản địa để xem, nếu có khối lớn của dữ liệu được bảo tồn, nhưng không thể tìm thấy bất cứ điều gì đáng ngờ có một trong hai
Vì vậy, câu hỏi của tôi là - là nó có thể rằng MEM_RESERVED có thể dẫn đến oom ngoại lệ? Nếu vậy, làm thế nào tôi có thể gỡ lỗi nó, xem lý do tại sao/làm thế nào số lượng lớn bộ nhớ đang được dành riêng? Bạn sẽ tìm nơi nào khác để tìm ra vấn đề có thể là gì?
Nếu có bất kỳ thông tin nào khác được yêu cầu, vui lòng yêu cầu và tôi sẽ cập nhật bài đăng của mình.
cảm ơn bạn đã trả lời, bạn có biết bất kỳ cơ hội nào để tôi có thể xem những gì có thể lưu trữ bộ nhớ khổng lồ này trong WinDbg không? – Michael
Giả sử bộ nhớ được sử dụng bởi đối tượng được quản lý, bạn có thể kiểm tra chúng bằng cách sử dụng '! Dumpheap' và'! Do'. Tuy nhiên, với điều kiện đầu ra của '! Eeheap' chỉ ra rằng vùng được quản lý là nhỏ, tôi giả định rằng một cái gì đó khác đã dành riêng bộ nhớ này. –
Bạn có thể chỉ định những gì người khác có thể đặt trước bộ nhớ không? Tôi bối rối vì tôi mong rằng "cái gì đó" hoặc là trên đống được quản lý, hoặc một số tài nguyên gốc trên đống bản địa - không phải trong số chúng trỏ đến bất kỳ điều đáng ngờ nào. Điều gì khác có thể dự trữ bộ nhớ? Tôi sẽ vui mừng hơn khi kiểm tra nó ngay lập tức. – Michael