Mỗi lần và một lần nữa tôi thấy mình làm điều gì đó vừa phải câm mà kết quả trong chương trình của tôi phân bổ tất cả bộ nhớ nó có thể nhận được và sau đó một số.Làm thế nào để bạn tự bảo vệ mình khỏi việc tiêu thụ bộ nhớ bỏ chạy làm giảm PC?
Loại điều này được sử dụng để làm cho chương trình chết khá nhanh với lỗi "hết bộ nhớ", nhưng những ngày này Windows sẽ hết cách để cung cấp bộ nhớ không tồn tại này cho ứng dụng và trên thực tế dường như được chuẩn bị để tự tử làm như vậy. Không phải là tất nhiên, nhưng nó sẽ khiến bản thân RAM khó sử dụng đến nỗi thậm chí chạy trình quản lý tác vụ cũng sẽ mất nửa giờ để hoán đổi (sau khi tất cả ứng dụng chạy trốn vẫn phân bổ bộ nhớ ngày càng nhiều).
Điều này không xảy ra quá thường xuyên, nhưng khi điều đó thật tai hại. Tôi thường phải thiết lập lại máy tính của tôi, gây ra mất dữ liệu theo thời gian và nói chung là rất nhiều bất tiện.
Bạn có lời khuyên thực tế nào về việc làm cho hậu quả của một sai lầm như vậy ít nghiêm trọng hơn không? Có lẽ một số tinh chỉnh registry để hạn chế số tiền tối đa của bộ nhớ ảo mà một ứng dụng được phép phân bổ? Hoặc một số cờ CLR sẽ giới hạn điều này chỉ cho ứng dụng hiện tại? (. Nó thường trong .NET mà tôi làm điều này để bản thân mình)
("Đừng chạy ra khỏi RAM" và "Mua thêm RAM" không sử dụng - cựu Tôi không có quyền kiểm soát, và sau này tôi đã làm.)
+1, tôi đã có ý định đặt câu hỏi này một lúc. Nó thậm chí còn tồi tệ hơn khi nó không phải là ứng dụng của tôi và tôi không thể nhấn 'Stop'. – zildjohn01
Thông thường, tôi đủ nhanh để tiêu diệt ứng dụng của mình bất cứ khi nào tôi cảm thấy có sự cố như thế này. Tuy nhiên 1 để suy nghĩ về một giải pháp thay vì chỉ sống với "nguy hiểm" này. Có lẽ có một số tinh chỉnh, điều đó sẽ được đánh giá cao! – zerm
Tôi chưa bao giờ thấy tiêu thụ bộ nhớ runaway mang máy tính xuống, nhưng nếu có, thì tôi hy vọng nó thực hiện điều đó trong quá trình phát triển hoặc QA để chúng tôi có thể khắc phục vấn đề; hoặc nếu nó xảy ra trong quá trình sản xuất, tôi hy vọng những người hoạt động của chúng tôi sẽ giết/phá hủy quy trình và thông báo cho tôi về nó. –