Sự khác biệt giữa bộ nhớ thực, ảo, chia sẻ và riêng tư là gì?


63

Các cột khác nhau trong Trình giám sát hoạt động hơi khó hiểu


Có thể đáng lưu ý rằng có loại bộ nhớ thứ 5 nếu bạn nhấp vào "Kiểm tra" trên một quy trình so với các cột trong Trình giám sát hoạt động. Cụ thể, có hai loại bộ nhớ "Ảo": "Kích thước bộ nhớ ảo" và "Bộ nhớ riêng ảo". Cái sau là những gì được hiển thị trong cột "Virtual Mem" trong Activity Monitor.
drfrogsplat

Câu trả lời:


46

Lấy từ câu trả lời của tôi tại Server Fault :

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 nó được sử dụng trong bộ nhớ Resident. (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


5
Từ việc đọc tài liệu Quản lý bộ nhớ của Apple, Inactive không nhất thiết phải được lưu vào bộ nhớ cache. Bạn có thể chứng minh điều này nếu bạn kiểm tra mức sử dụng bộ nhớ Không hoạt động của mình (của tôi là 747,5 MB ngay bây giờ) và "Hoán đổi được sử dụng" (của tôi là 0 byte ngay bây giờ). Không hoạt động chỉ đề cập đến các trang bộ nhớ gần đây chưa được đọc / ghi bởi bất kỳ quy trình nào.
drfrogsplat

1
Có thể đáng để làm rõ "Ảo" vì có hai tham chiếu đến bộ nhớ "Ảo" trong Trình giám sát hoạt động. Cột " Bộ nhớ ảo" đề cập đến " Bộ nhớ riêng ảo " trong cửa sổ Kiểm tra quy trình và sau đó có một mục khác có tiêu đề " Kích thước bộ nhớ ảo " trong cửa sổ đó (mà tôi tin là thành phần chung của bộ nhớ ảo). Đây là vào ngày 10.6.4 (trong trường hợp Activity Monitor đã thay đổi thuật ngữ ...)
drfrogsplat

Là "bộ nhớ riêng" là một phần của "bộ nhớ thực"?
Franklin Yu

6

Mem thực liên quan đến bộ nhớ vật lý (mô-đun RAM thực trong máy tính của bạn). Virtual Mem là bộ nhớ "giả" được phân bổ cho quá trình, nghĩa là bộ nhớ được phân bổ trên phương tiện lưu trữ vĩnh viễn (ổ cứng, ổ cứng, v.v.) cho quy trình đó. Bộ nhớ dùng chung là bộ nhớ vật lý (Real) có thể được chia sẻ với các quá trình khác. Bộ nhớ riêng là bộ nhớ "thực" chỉ có thể được sử dụng theo quy trình được phân bổ.

Những giải thích này cũng có thể giúp ... trực tiếp từ màn hình hoạt động -> trợ giúp -> xem sử dụng bộ nhớ hệ thống:

Dưới đây là giải thích về một số thông tin được hiển thị ở dưới cùng của khung bộ nhớ:

  • Có dây: Bộ nhớ có dây chứa thông tin phải luôn ở trong RAM
  • Hoạt động: Bộ nhớ hoạt động có chứa thông tin đang được sử dụng tích cực.
  • Không hoạt động: Bộ nhớ không hoạt động chứa thông tin không được sử dụng tích cực. Để 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 sau.
  • Được sử dụng: Bộ nhớ đã sử dụng đang được sử dụng bởi một quá trình hoặc bởi hệ thống. Bộ nhớ đã sử dụng là tổng của bộ nhớ có dây, hoạt động và không hoạt động. Nếu hệ thống yêu cầu bộ nhớ, nó cần bộ nhớ trống trước khi sử dụng bộ nhớ.
  • Miễn phí: Bộ nhớ miễn phí không được sử dụng và có sẵn ngay lập tức.
  • Kích thước VM: Bộ nhớ ảo, hoặc VM, là không gian đĩa cứng có thể được sử dụng làm bộ nhớ. Kích thước VM là dung lượng ổ đĩa được sử dụng làm bộ nhớ. Mac OS X có thể sử dụng nhiều bộ nhớ hơn dung lượng RAM vật lý bạn có. Một đĩa cứng chậm hơn nhiều so với RAM, vì vậy hệ thống bộ nhớ ảo sẽ tự động phân phối thông tin giữa không gian đĩa và RAM để có hiệu suất hiệu quả. Trang in / outs: Số lượng gigabyte thông tin Mac OS X đã di chuyển giữa RAM và dung lượng ổ đĩa

6
Điều này LAF không đúng. Bộ nhớ ảo không phải là bộ nhớ được phân bổ trên đĩa (được gọi là trao đổi). Bộ nhớ ảo là không gian địa chỉ được phân bổ nhưng không có trong bộ nhớ vật lý. Điều đó có vẻ giống như điều tương tự, nhưng nó tinh tế khác nhau. Trong nhiều trường hợp, các chương trình phân bổ bộ nhớ mà không bao giờ chạm vào nó. Trong những trường hợp đó, các chương trình đang sử dụng rất nhiều bộ nhớ ảo. Để đưa ra một ví dụ cụ thể, hệ thống của tôi hiện đang sử dụng 512MB trao đổi, nhưng có bộ nhớ ảo được phân bổ là 196GB (đây là số tiền khá điển hình cho những người chạy Snow Leopard trên K64).
Louis Gerbarg

2
@Louis, nếu bộ nhớ ảo đã được phân bổ nhưng không sử dụng RAM hoặc đĩa cứng, thì nó ở đâu?
Michael Underwood

4
@Michael: hư không. Đó là lý thuyết. Chỉ vì nó được phân bổ và gán địa chỉ không nhất thiết có nghĩa là nó thực sự được sử dụng. Các bit cấp thấp của HĐH biết khi nào ánh xạ các địa chỉ đó đến các vị trí vật lý trong bộ nhớ RAM hoặc trao đổi, nhưng không cần phải buộc không gian đó nếu ứng dụng không thực sự lưu trữ thông tin tại các địa chỉ đó. Không chỉ vậy, nhưng bạn sẽ nhận thấy cột đó cho mỗi quy trình, Virtual Mem, không đến bất kỳ nơi nào gần với việc thêm vào Kích thước VM. Các quy trình không thực sự sử dụng tất cả bộ nhớ đó.
Robert S Ciaccio

2
Có rất nhiều VM không thực sự có thể hoán đổi được. Chẳng hạn, nếu bạn mmap một tệp 4GB thì phải mất 4GB VM, khi đọc nó sẽ trang trực tiếp từ tệp và dưới áp lực, nó sẽ bị loại bỏ (không bị tráo đổi) vì tệp gốc có thể được đọc lại. VM và hoán đổi là những thứ thực sự hoàn toàn khác nhau, VM chỉ đơn giản được sử dụng để tìm ra thứ gì để trao đổi.
Louis Gerbarg

3
Bằng VSIZE tôi đang đề cập đến những gì không được liệt kê trong màn hình hoạt động, bạn có thể thấy nó được liệt kê ở trên nếu bạn muốn. Những gì Trình giám sát hoạt động liệt kê trong cột bộ nhớ ảo là cái thường được gọi là VPRVT, đây là lượng địa chỉ ảo được sử dụng bởi ứng dụng không được chia sẻ với bất kỳ ứng dụng nào khác.
Louis Gerbarg

4

Apple đã cập nhật Trình giám sát hoạt động trong OSX 10.9 (Mavericks). Họ có một bài viết hay về ý nghĩa của mọi thứ ở đây http://support.apple.com/kb/HT5890 . Tóm tắt...

nhập mô tả hình ảnh ở đây

  • Bộ nhớ vật lý: Dung lượng RAM được cài đặt.
  • Bộ nhớ được sử dụng: Dung lượng RAM đang được sử dụng và không có sẵn ngay lập tức cho các ứng dụng khác.
  • Bộ nhớ ảo: Lượng ánh xạ bộ nhớ mà các ứng dụng đã yêu cầu. Đây không phải là mức tiêu thụ thực tế của tài nguyên RAM và kích thước được xác định bởi tác giả của ứng dụng.
  • Hoán đổi được sử dụng: Không gian trên ổ đĩa của bạn đang được sử dụng để trao đổi các tệp không sử dụng đến và từ RAM. Việc xem một số hoạt động là bình thường và đó không phải là dấu hiệu cho thấy bạn đã cạn kiệt tài nguyên RAM. Nhìn thấy áp suất bộ nhớ ở trạng thái Đỏ sẽ chỉ ra rằng tài nguyên RAM đã cạn kiệt.
  • Bộ nhớ ứng dụng: Lượng không gian đang được các ứng dụng sử dụng.
  • Bộ nhớ có dây: Bộ nhớ không thể lưu vào bộ nhớ cache, do đó bộ nhớ phải nằm trong RAM. Bộ nhớ này không thể được mượn bởi các ứng dụng khác.
  • Được nén: Dung lượng bộ nhớ trong RAM được nén, cung cấp thêm tài nguyên RAM cho các ứng dụng khác.
  • Bộ nhớ cache tệp: Không gian trong RAM được đánh dấu là có sẵn cho các ứng dụng sử dụng có chứa các tệp được sử dụng gần đây.

Biểu đồ áp suất bộ nhớ

Sự kết hợp của thống kê bộ nhớ Miễn phí, Có dây, Hoạt động, Không hoạt động & Được sử dụng trong các phiên bản trước của Trình giám sát hoạt động đã được thay thế trong Mavericks bằng biểu đồ "Áp suất bộ nhớ" dễ đọc.

Áp suất bộ nhớ được biểu thị bằng màu sắc:

  • Màu xanh lá cây - Tài nguyên bộ nhớ RAM có sẵn.
  • Amber - tài nguyên bộ nhớ RAM đang được giao nhiệm vụ.
  • Màu đỏ - Tài nguyên bộ nhớ RAM đã cạn kiệt và OS X đang sử dụng ổ đĩa cho bộ nhớ.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.