2012-11-18 5 views
8

Có thể một số người vui lòng cho tôi biết, loại bộ nhớ nào bị bẩn/cư trú và chúng đến từ đâu? Bộ nhớ thường trú có giống với bộ nhớ "có dây" của Mac OS không?Bộ nhớ thường trú và bộ nhớ dơ bẩn của iOS là gì?

đây là những gì tôi thấy về Mac OS bộ nhớ:

Wired: Điều này nói đến hạt nhân mã và như vậy. Bộ nhớ không được được chuyển ra khỏi RAM. Còn được gọi là bộ nhớ cư trú.

Được chia sẻ: Bộ nhớ được chia sẻ giữa hai hoặc nhiều quy trình. Cả hai quy trình sẽ hiển thị số lượng bộ nhớ này để có thể có một chút gây hiểu nhầm về số lượng bộ nhớ thực sự được sử dụng.

Thực tế: Đây là mức sử dụng bộ nhớ "thực" cho một ứng dụng như được báo cáo bởi task_info() - số lượng thô của số trang vật lý mà quy trình hiện tại có. (RSIZE)

Riêng tư: Đây là bộ nhớ mà quy trình chỉ sử dụng trên riêng nó được sử dụng trong bộ nhớ Thường trú. (RPRVT)

Ảo: Tổng dung lượng địa chỉ trong quá trình ánh xạ tới bất kỳ thứ gì - cho dù đó là một không gian tùy ý lớn cho các biến số hay bất kỳ thứ gì - nó không tương đương với việc sử dụng VM thực tế. (VSIZE)

Hoạt động: Bộ nhớ hiện được gắn nhãn là đang hoạt động và được sử dụng RAM.

Không hoạt động: "bộ nhớ Inactive không còn được sử dụng và đã được cache vào đĩa Nó sẽ ở lại RAM cho đến khi một ứng dụng khác cần không gian Rời thông tin này trong RAM là để lợi thế của bạn nếu bạn (hoặc a.. khách hàng của máy tính của bạn) quay lại sau. " - Trợ giúp của Mac OS X

Miễn phí: Dung lượng RAM thực sự có sẵn mà không có bất kỳ dữ liệu nào.

Trả lời

27

Đã gần một năm và tôi đã tìm ra.

bộ nhớ sạch

bộ nhớ sạch là những kỷ niệm mà có thể được tái tạo, trên iOS nó là ký ức về:

  • khuôn khổ hệ thống
  • thực thi nhị phân của ứng dụng của bạn
  • bộ nhớ file ánh xạ

Cũng thông báo thứ là tình huống: khi ứng dụng của bạn liên kết đến một khung công tác, bộ nhớ sạch sẽ tăng theo kích thước của khung công tác nhị phân. Nhưng hầu hết thời gian, chỉ một phần nhị phân thực sự được nạp trong bộ nhớ vật lý.

nhớ bẩn

Tất cả ký ức đó không phải là bộ nhớ sạch là bộ nhớ bẩn, bộ nhớ bẩn không thể được tái tạo bởi hệ thống.

Khi có áp lực bộ nhớ, hệ thống sẽ tải xuống một số bộ nhớ sạch, khi bộ nhớ là cần thiết một lần nữa, hệ thống sẽ tạo lại chúng.

Nhưng đối với bộ nhớ dơ bẩn, hệ thống không thể tải chúng và iOS không có cơ chế trao đổi, bộ nhớ dơ sẽ luôn được giữ trong bộ nhớ vật lý, cho đến khi đạt đến giới hạn nhất định, sau đó ứng dụng của bạn sẽ bị chấm dứt và tất cả bộ nhớ cho nó được tái chế bởi hệ thống.

bộ nhớ ảo

virtual memory = clean memory + dirty memory. 

Điều đó có nghĩa bộ nhớ ảo là tất cả các bộ nhớ ứng dụng của bạn muốn.

bộ nhớ thường trú

resident memory = dirty memory + clean memory that loaded in physical memory 

cư dân bộ nhớ là bộ nhớ thực sự nạp vào bộ nhớ vật lý của bạn, nó có nghĩa là tất cả các bộ nhớ bẩn và các bộ phận của bộ nhớ sạch của bạn.

kết luận

Bất cứ lúc nào, điều này luôn luôn đúng:

virtual memory == (clean memory + dirty memory) > resident memory > dirty memory 

Nếu bạn đang lo lắng về bộ nhớ vật lý ứng dụng của bạn đang tiến hành (đó là lý do chính App bạn bị chấm dứt do bộ nhớ thấp), bạn nên tập trung chủ yếu vào bộ nhớ thường trú.

7

Bộ nhớ thường trú là bộ nhớ được cấp cho ứng dụng của bạn. Bộ nhớ bẩn là bộ nhớ cư trú không thể tự động được phân bổ do thiếu hệ thống phân trang trong iOS. Tôi tìm thấy thông tin này tại http://liam.flookes.com/wp/2012/05/03/finding-ios-memory/. Sau đó, đối với các loại bộ nhớ mà bạn đã liệt kê, bộ nhớ thường trú trong iOS gần hơn với thực tế hoặc riêng tư. Từ sự hiểu biết của tôi, đó là bộ nhớ dơ bẩn mà bạn nên quan tâm nhất trong iOS vì nó có thể xác định xem ứng dụng của bạn có bị giết khi bị treo trong nền nếu có tình trạng bộ nhớ thấp.