"Số lần nhập / giây của trang là bộ đếm để xem, nhưng bạn không nên lo lắng về việc" hoán đổi "vì các cửa sổ không sử dụng tệp trang như * nixes làm.
Trước tiên, bạn cần hiểu rằng các trang windows không ra ngoài. Tôi sẽ trích dẫn phần có liên quan của bài đăng trên blog của Eric Lipperts (được chỉnh sửa nhẹ) vì tôi không thể tự nói điều đó tốt hơn:
"RAM có thể được xem như là một tối ưu hóa hiệu suất. Truy cập dữ liệu trong RAM, nơi thông tin được lưu trữ trong các điện trường lan truyền gần với tốc độ ánh sáng nhanh hơn nhiều so với truy cập dữ liệu trên đĩa, nơi thông tin được lưu trữ rất lớn, nặng phân tử kim loại màu
Hệ điều hành theo dõi những trang lưu trữ nào từ các quá trình đang được truy cập thường xuyên nhất và tạo một bản sao của chúng trong RAM, để tăng tốc độ. Khi một tiến trình truy cập một con trỏ tương ứng với một trang hiện không được lưu trong bộ nhớ cache trong RAM, hệ điều hành sẽ xảy ra lỗi trang Trang, lỗi đi ra đĩa và tạo một bản sao của trang từ đĩa sang RAM, đưa ra giả định hợp lý rằng nó sẽ sớm được truy cập lại một thời gian nữa.
Hệ điều hành cũng rất thông minh về việc chia sẻ tài nguyên chỉ đọc. Nếu cả hai quá trình đều tải cùng một trang mã từ cùng một DLL, thì hệ điều hành có thể chia sẻ bộ đệm RAM giữa hai quy trình. Vì mã có thể sẽ không bị thay đổi bởi một trong hai quá trình, nên việc lưu trang trùng lặp của RAM bằng cách chia sẻ nó là hoàn toàn hợp lý.
Nhưng ngay cả với việc chia sẻ thông minh, cuối cùng hệ thống bộ nhớ đệm này sẽ hết RAM. Khi điều đó xảy ra, hệ điều hành sẽ đoán xem trang nào ít có khả năng được truy cập lại sớm nhất, ghi chúng ra đĩa nếu chúng đã thay đổi và giải phóng RAM đó để đọc trong thứ gì đó có khả năng được truy cập lại Sớm.
Khi hệ điều hành đoán không chính xác, hoặc, nhiều khả năng, khi đơn giản là không đủ RAM để lưu trữ tất cả các trang được truy cập thường xuyên trong tất cả các quy trình đang chạy, thì máy bắt đầu đập phá ra. Hệ điều hành dành toàn bộ thời gian để viết và đọc bộ lưu trữ đĩa đắt tiền, đĩa chạy liên tục và bạn không hoàn thành công việc nào.
Điều này cũng có nghĩa là việc "hết RAM" hiếm khi dẫn đến lỗi ra khỏi bộ nhớ lỗi. Thay vì một lỗi, nó dẫn đến hiệu suất kém vì toàn bộ chi phí của việc lưu trữ thực sự trên đĩa đột nhiên trở nên có liên quan.
Một cách khác để xem xét điều này là tổng số bộ nhớ ảo mà chương trình của bạn tiêu thụ thực sự không liên quan nhiều đến hiệu suất của nó. Điều liên quan không phải là tổng dung lượng bộ nhớ ảo đã tiêu thụ, mà là, (1) bao nhiêu bộ nhớ đó không được chia sẻ với các quy trình khác, (2) "bộ làm việc" của các trang thường được sử dụng là bao nhiêu và ( 3) liệu các bộ làm việc của tất cả các quy trình hoạt động có lớn hơn RAM có sẵn hay không.
Cho đến bây giờ, rõ ràng là tại sao các lỗi trong bộ nhớ lỗi thường không liên quan gì đến bộ nhớ vật lý của bạn, hoặc thậm chí có bao nhiêu dung lượng lưu trữ. Hầu như luôn luôn là về không gian địa chỉ, mà trên Windows 32 bit tương đối nhỏ và dễ bị phân mảnh. "
Một vài điểm bổ sung:
- dlls và các tệp chương trình luôn chỉ được phân trang, không bao giờ thoát ra vì chúng đã có trên đĩa (và thường là các trang đầu tiên được giải phóng khi ram vật lý xuống thấp)
- bạn rất muốn chạy ra khỏi các mục trong bảng trang miễn phí hoặc có bộ nhớ bị phân mảnh nhiều hơn bất kỳ vấn đề bộ nhớ nào khác (ngoài hiệu năng tổng thể kém như đã đề cập
- ngay cả khi bạn chạy không có tệp trang, bạn vẫn có thể gặp lỗi trang
- nói chung, nhìn vào bộ nhớ được cam kết sẽ nói nhiều hơn về cách một quá trình sử dụng bộ nhớ
cho một bức tranh hoàn chỉnh về cách thức quản lý bộ nhớ trong các cửa sổ nhìn thấy
Trình quản lý bộ nhớ ảo trong Windows NT
nếu bạn nghĩ rằng bạn có vấn đề về bộ nhớ, trước tiên tôi khuyên bạn nên xem bản trình bày này về khắc phục sự cố bộ nhớ windows
Đây là một lời giải thích tuyệt vời về lý do tại sao đôi khi bạn bị "hết bộ nhớ" khi bạn không nhờ vào sự phân mảnh bộ nhớ:
Xem thêm Đẩy các giới hạn của Windows: Bộ nhớ vật lý
Thông tin thêm về Bộ nhớ ảo, Phân mảnh và Rò rỉ Bộ nhớ và WOW64
RAM, bộ nhớ ảo, Pagefile và tất cả những thứ đó (hỗ trợ microsoft)
Cập nhật:
Windows 10 làm một cái gì đó hơi khác với bộ nhớ và theo thời gian, bạn sẽ thấy một quá trình gọi là "Hệ thống và bộ nhớ nén" Windows 10 thêm một "kho lưu trữ nén" vào danh sách phân trang. Ram này là bộ nhớ USER được sở hữu bởi hệ thống (thông thường hệ thống chỉ có bộ nhớ kernel) Bộ nhớ này được nén tại chỗ để giảm trung bình xuống còn khoảng 30%. Điều này cho phép nhiều trang được lưu trữ trong bộ nhớ (đối với những bạn làm toán có dung lượng lớn hơn 70%) Lưu ý rằng nếu bộ nhớ vẫn có áp lực thì có thể đặt các trang từ kho lưu trữ (chế độ người dùng Không gian xử lý hệ thống) danh sách (được nén) mà sau đó có thể được ghi vào tệp trang vật lý. Hệ thống sẽ thấy chúng từ không gian chế độ người dùng hệ thống và được nén và sẽ không cố gắng đưa chúng trở lại cửa hàng. Vì vậy, trên các hệ thống windows 10 có vẻ như hệ thống đang hít ram nhưng thực tế nó chỉ đang cố gắng sử dụng ram hiệu quả hơn. Người dùng Mac đã sử dụng một tính năng tương tự kể từ năm 2013 và các phiên bản mới hơn của nhân Linux sử dụng phiên bản nén bộ nhớ. Phương pháp bảo tồn bộ nhớ này không chỉ tốt hơn mà còn phổ biến trong các hệ điều hành khác.