Tôi không hiểu điều gì gây ra "bộ sưu tập thế hệ thứ hai được thực hiện cứ sau 100 giây", rất hiếm khi thấy một hệ thống thực tế hoạt động trong chu kỳ "đồng hồ".
Nếu bạn đang chịu tải bộ nhớ cao và sử dụng nhiều đối tượng, thì có: GC sẽ bận ... nếu nó đang nhấn gen-2, thì có vẻ như bạn đã có rất nhiều tiền cược/các vật thể sống lâu treo xung quanh ... Bạn có thể tạo ra nhiều vật thể hơn sau đó có thể vừa vặn trong đống trẻ cùng một lúc hoặc bạn bị rò rỉ bộ nhớ.
Giả sử bạn không bị rò rỉ, bạn đã kiểm tra với memory profiler chưa? Tôi cũng giả sử bạn không tạo ra nhiều rác không cần thiết (ví dụ: string1 + = string2 bên trong vòng lặp).
Tôi có thể nghĩ về hai điều mà có thể trợ giúp.
Bằng cách giới hạn số lượng yêu cầu (luồng) Asp.net xử lý cùng một lúc, bạn có thể giới hạn số lượng đối tượng trực tiếp và tăng tốc xử lý yêu cầu duy nhất, do đó không giữ đối tượng tồn tại lâu. (Bạn đang nhận được rất nhiều công tắc liên hệ chỉ?)
Nếu bạn đang lưu trữ đối tượng trong bộ nhớ cache Asp.net và/hoặc phiên Asp.net. Bạn có thể thử sử dụng kho lưu trữ ngoài quy trình cho thông tin lưu trữ này, ví dụ: máy chủ phiên Asp.net, máy chủ phiên bên thứ ba, memcache hoặc máy chủ bộ nhớ cache được phát hành gần đây của Microsoft (Velocity). Chỉ cần đọc lại dữ liệu từ cơ sở dữ liệu khi bạn cần, có thể tốt hơn sau đó lưu trữ nó trong đối tượng sống lâu.
Thất bại ở trên, bạn đang sử dụng bao nhiêu bộ nhớ?Bạn có thể xem xét x64 và một tấn bộ nhớ? Hoặc một webfarm.
Nguồn
2009-06-04 09:47:05
Nếu bạn cần sự kiểm soát này nhiều hơn GC, thì có thể bạn không nên sử dụng ngôn ngữ được quản lý như C# hoặc VB.net. Và không có bạn sẽ không thực hiện một GC tốt hơn sau đó những gì có trong .net đã. Nhiều người đã thử. Tất cả đều thất bại. = P – Tony
Khi viết bộ sưu tập rác của riêng bạn, người ta có quyền tự do điều chỉnh nó theo nhu cầu chính xác của bạn. Điều này thường có thể là một vấn đề đơn giản hơn nhiều so với các nhà phát triển framework .net: viết một bộ sưu tập cho tất cả các nhu cầu. Khác với một điểm cụ thể, tôi thường đồng ý với Tony. –