Tôi đã xem một số hiện tượng kỳ lạ trong lập trình trong một thời gian, vì quá tải được bật theo mặc định trên các hệ thống Linux. Dường như với tôi rằng khá nhiều ứng dụng cấp cao (ví dụ: ứng dụng viết bằng ngôn ngữ lập trình bậc cao như Java, Python hoặc C# bao gồm một số ứng dụng máy tính để bàn được viết bằng C++ sử dụng các thư viện lớn như Qt) bộ nhớ hoạt động ảo. Ví dụ, nó là bình thường cho trình duyệt web để phân bổ 20GB ram trong khi chỉ sử dụng 300MB của nó. Hoặc cho một môi trường dektop, máy chủ mysql, khá nhiều mỗi ứng dụng java hoặc mono và như vậy, để phân bổ hàng chục GB RAM.Tại sao có quá nhiều ứng dụng phân bổ số lượng bộ nhớ ảo vô cùng lớn trong khi không sử dụng bất kỳ bộ nhớ nào?
Tại sao điều đó lại xảy ra? Điểm là gì? Có lợi ích gì trong việc này không?
Tôi nhận thấy rằng khi tôi tắt quá tải trong linux, trong trường hợp hệ thống máy tính để bàn thực sự chạy rất nhiều ứng dụng này, hệ thống sẽ trở nên không sử dụng được vì nó thậm chí không khởi động đúng cách.
Ok, nhưng java không chỉ được sử dụng trên Linux. Có quá tải được bật trên mọi hệ điều hành trong những ngày này không? Nếu nó không (và tôi nghi ngờ nó sẽ là) làm thế nào là nó có thể cho các hệ điều hành để chạy các chương trình này là tốt, trong khi nó không có vẻ là có thể trên linux với overcommit vô hiệu hóa (tôi nghĩa đen thậm chí không thể khởi động hệ điều hành khi Tôi vô hiệu hóa việc overcommit, các yêu cầu bộ nhớ chỉ là rất lớn). – Petr
@Petr: "Overcommit" - chuyển nhiều bộ nhớ ảo hơn bộ nhớ vật lý - thực sự là mặc định trên Windows và Linux. Và điều đó là đủ để khiến nhiều nhà phát triển không thực sự bận tâm về phần còn lại của thế giới điện toán. Một trong những hệ điều hành không "làm" bộ nhớ ảo, ví dụ, Amiga OS 3.x - và một hệ điều hành không bao giờ "làm" Java. – DevSolar