Tôi đang tìm kiếm một số rò rỉ bộ nhớ trong một dịch vụ chạy dài (sử dụng F #) ngay bây giờ. Các chỉ "lạ" điều tôi đã thấy cho đến nay như sau:rò rỉ bộ nhớ trong Microsoft.FSharp.Control.Mailbox?
- tôi sử dụng một MailboxProcessor trong một hệ thống con với một QueueChannelCommands đại số-datatype tên (nhiều hơn hoặc ít hơn một bó của chương trình Add/Nhận lệnh - một số Với AsyncReplyChannels đính kèm)
- khi tôi cấu hình dịch vụ (sử dụng Ants Memory Profiler) Tôi thấy các thể hiện của mảng được đề cập (hầu hết có chiều dài 4, nhưng đang phát triển) - tất cả trống (null) có tham chiếu dường như được giữ bởi Control. Hộp thư:
Tôi không thể nhìn thấy bất kỳ bọ chét nào vào trong mã của tôi cho hành vi này (mã tiêu chuẩn của bạn, bạn có thể thấy ở mỗi Mailbox-ví dụ ra có - chỉ là một vòng lặp với một let! = receive
và match
để làm theo kết thúc với một return! loop()
Có ai nhìn thấy loại hành vi trước hoặc thậm chí biết làm thế nào để xử lý này? Hoặc đây có phải là lỗi (đã biết) không?
Cập nhật: sự phát triển của các mảng thực sự là lạ - có vẻ như có thêm không gian nối mà không beeing sử dụng đúng cách:
mảng có vẻ là "mailbox.arrivals" nội bộ của MailboxProcessor nếu điều này là bất kỳ sự giúp đỡ – Carsten
Dave Thomas nhận thấy một hành vi tương tự khi ông sử dụng 'trở lại! loop() 'bên cạnh khối try/catch: http://moiraesoftware.com/blog/2011/12/11/fixing-a-hole/. Tôi không nghĩ đó là trường hợp với chương trình của bạn. – pad
có cảm ơn bạn - Tôi biết về vấn đề này, nhưng điều này dẫn đến chi phí cao hơn nhiều (ông đã tìm thấy rất nhiều công cụ Async), tương tự như khi nào! thay vì trả lại! được sử dụng - ở đây tôi chỉ thấy các mảng trống, đang phát triển mà không có bất kỳ vấn đề không đồng bộ nào. – Carsten