Câu trả lời cơ bản nhất? Không. Hệ điều hành xử lý việc quản lý bộ nhớ cho người dùng - cung cấp một quá trình nhiều bộ nhớ theo yêu cầu và không cung cấp nhiều về khả năng sửa đổi cách hệ thống hoạt động. Nó không giúp ích gì nhiều cho việc cố gắng tìm hiểu xem việc sử dụng bộ nhớ có phải là một phần của phương trình hay không tại sao các máy chủ Linux lại vượt trội so với các máy chủ Mac.
Do thiếu "tính hack" trong hệ thống bộ nhớ ảo, các lựa chọn tốt nhất của bạn là đánh giá hiệu năng của bộ nhớ ảo để xem đó có thực sự là lý do bạn gặp vấn đề về hiệu năng hay không - cơ bản nhất là sử dụng vm_stat
hoặc sử dụng theo nó sống bằng cách sử dụng vm_stat [number of seconds]
để xem có bao nhiêu trang bên ngoài đang xảy ra. Di chuyển các trang không sử dụng từ RAM sang ổ cứng có chi phí thấp hơn nhiều so với việc lấy lại các trang từ ổ cứng về RAM của bạn. Một trang trong thuật ngữ OS X đề cập đến 4kb dữ liệu.
Ngoài ra, các quy trình 32 bit (ví dụ: Illustrator) không thể truy cập nhiều hơn 4GB nên về mặt lý thuyết có thể có 2GB miễn phí và hết bộ nhớ nếu bạn đã cài đặt 6GB.
Trên cả máy tính để bàn của bạn và máy chủ, tôi sẽ chạy vm_stat 2
và kiểm tra cột cuối cùng - đặc biệt là khi bạn gặp phải độ trễ nhiều giây khi chuyển sang nói Illustrator.
Để tìm hiểu mức hoán đổi thực sự lớn đến mức nào, bạn có thể kiểm tra kích thước trao đổi trong Activity Monitor hoặc chạy du -shc /var/vm/swap* | tail -n 1
.
Việc sử dụng du -sh /var/vm
có một cảnh báo: trên máy tính xách tay có chế độ ngủ đông (mọi thứ trong 4 năm qua hoặc mới hơn) có thể có sleepimage
kích thước gần bằng bao nhiêu bộ nhớ bạn đã cài đặt.
Bộ nhớ Mac OS X biệt ngữ:
Có dây : Điều này đề cập đến mã hạt nhân và như vậy. Bộ nhớ không nên được chuyển ra khỏi RAM. Cũng biết là bộ nhớ cư trú.
Chia sẻ : Bộ nhớ được chia sẻ giữa hai hoặc nhiều quá trình. Cả hai quá trình sẽ hiển thị lượng bộ nhớ này nên có thể gây hiểu nhầm đôi chút về số lượng bộ nhớ thực sự được sử dụng.
Real : Đây là mức sử dụng bộ nhớ "thực" cho một ứng dụng được báo cáo bởi task_info () - một số lượng lớn các trang vật lý mà quy trình hiện tại có. (KÍCH THƯỚC)
Riêng tư : Đây là bộ nhớ mà một quá trình chỉ sử dụng riêng mà nó được sử dụng trong bộ nhớ cư trú. (RPRVT)
Ảo : Tổng lượng không gian địa chỉ trong quy trình được ánh xạ tới bất kỳ thứ gì - cho dù đó là không gian lớn tùy ý cho các biến hay bất cứ thứ gì - nó không tương đương với việc sử dụng VM thực tế. (KÍCH THƯỚC)
Hoạt động : Bộ nhớ hiện được gắn nhãn là hoạt động và được sử dụng RAM.
Không hoạt động : "Bộ nhớ không hoạt động không còn được sử dụng và đã được lưu vào bộ nhớ cache. Nó sẽ vẫn còn trong RAM cho đến khi ứng dụng khác cần dung lượng. Để lại thông tin này trong RAM là lợi thế của bạn nếu bạn (hoặc khách hàng của máy tính) quay lại để nó sau. " - Trợ giúp Mac OS X
Miễn phí : Dung lượng RAM thực sự có sẵn mà không cần bất kỳ dữ liệu nào.
Tài liệu tốt nhất mà tôi biết (và đã có thể tìm thấy trong nghiên cứu tiếp theo) là bài viết Quản lý bộ nhớ riêng của Apple trên trang web dành cho nhà phát triển của họ.
Các nguồn đáng giá khác: danh sách gửi thư của Darwin-dev: [ 1 ], [ 2 ] và một bài viết cũ trên MacOSXHint . Ngoài ra, Mike Ash đã đăng một bài giới thiệu tốt về giáo dân trên blog của mình
Có thể (tôi chưa thử) để vô hiệu hóa hệ thống bộ nhớ ảo bằng cách chạy sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
và sau đó khởi động lại để Dynamic_pager (chương trình thực sự cấp phát bộ nhớ ảo) không khởi động. Tuy nhiên vì hệ điều hành giả định rằng nó có bộ nhớ ảo nên bạn có thể thấy mình gặp vấn đề rất, rất nhanh. Để tải nó chạy lại sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(nếu cần từ chế độ người dùng)