Từ OSMemoryNotification.h ,
/*
** Threshold values for notifications
*/
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
totoal 5 mức cảnh báo bộ nhớ (-1,3).
Về mô tả cảnh báo Mức bộ nhớ, câu trả lời của @ KennyTM là tuyệt vời.
Tôi muốn thêm một số điểm liên quan có thể giúp ích cho PM và những người khác.
Bạn nên làm gì khi có Cảnh báo mức bộ nhớ?
Khi nhận được bất kỳ cảnh báo nào trong số này, phương thức xử lý của bạn sẽ phản hồi bằng cách giải phóng ngay lập tức mọi bộ nhớ không cần thiết. Ví dụ: hành vi mặc định của lớp UIViewController là xóa chế độ xem của nó nếu chế độ xem đó hiện không hiển thị; các lớp con có thể bổ sung hành vi mặc định bằng cách xóa các cấu trúc dữ liệu bổ sung. Một ứng dụng duy trì bộ nhớ cache hình ảnh có thể phản hồi bằng cách phát hành bất kỳ hình ảnh nào hiện không có trên màn hình.
Làm thế nào để quan sát cảnh báo Mức bộ nhớ?
Từ http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Khi hệ thống gửi cảnh báo bộ nhớ thấp đến ứng dụng của bạn, hãy phản hồi ngay lập tức. iOS thông báo cho tất cả các ứng dụng đang chạy bất cứ khi nào dung lượng bộ nhớ trống xuống dưới ngưỡng an toàn. (Nó không thông báo cho các ứng dụng bị tạm ngừng.) Nếu ứng dụng của bạn nhận được cảnh báo này, ứng dụng phải giải phóng nhiều bộ nhớ nhất có thể. Cách tốt nhất để làm điều này là xóa các tham chiếu mạnh đến bộ nhớ đệm, đối tượng hình ảnh và các đối tượng dữ liệu khác có thể được tạo lại sau này.
UIKit cung cấp một số cách để nhận cảnh báo bộ nhớ thấp, bao gồm những cách sau:
- Triển khai phương thức applicationDidReceiveMemoryWarning: của đại biểu ứng dụng của bạn.
- Ghi đè phương thức didReceiveMemoryWarning trong lớp con UIViewController tùy chỉnh của bạn.
- Đăng ký để nhận UIApplicationDidReceiveMemoryWarningNotificationnotification.
Làm thế nào để giảm dấu chân bộ nhớ ứng dụng của bạn?
- Loại bỏ rò rỉ bộ nhớ.
- Tạo các tệp tài nguyên càng nhỏ càng tốt.
- Sử dụng Dữ liệu cốt lõi hoặc SQLite cho các tập dữ liệu lớn.
- Tải tài nguyên một cách lười biếng.
- Xây dựng chương trình của bạn bằng cách sử dụng tùy chọn Thumb.
Thông tin chi tiết tại http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
Làm thế nào để phân bổ bộ nhớ một cách khôn ngoan?
- Giảm thiểu việc sử dụng các đối tượng được phát hành tự động: Với tính năng đếm tham chiếu tự động (ARC), tốt hơn là bạn nên cấp phát / init các đối tượng và để trình biên dịch phát hành chúng cho bạn vào thời điểm thích hợp. Điều này đúng ngay cả đối với các đối tượng tạm thời mà trước đây bạn có thể đã tự động cài đặt để ngăn chúng vượt qua phạm vi của phương thức hiện tại.
- Áp đặt giới hạn kích thước cho tài nguyên : Tránh tải tệp tài nguyên lớn khi tệp tài nguyên nhỏ hơn sẽ làm được. Thay vì sử dụng hình ảnh có độ phân giải cao, hãy sử dụng hình ảnh có kích thước phù hợp cho các thiết bị chạy iOS. Nếu bạn phải sử dụng các tệp tài nguyên lớn, hãy tìm cách chỉ tải phần tệp bạn cần vào bất kỳ thời điểm nào. Ví dụ: thay vì tải toàn bộ tệp vào bộ nhớ, hãy sử dụng các chức năng mmap và munmap để ánh xạ các phần của tệp vào và ra khỏi bộ nhớ. Để biết thêm thông tin về ánh xạ tệp vào bộ nhớ.
- Tránh các nhóm vấn đề không bị ràng buộc : Các nhóm vấn đề không bị ràng buộc có thể yêu cầu một lượng lớn dữ liệu tùy ý để tính toán. Nếu bộ yêu cầu nhiều bộ nhớ hơn khả dụng, ứng dụng của bạn có thể không thể hoàn thành các phép tính. Ứng dụng của bạn nên tránh những bộ như vậy bất cứ khi nào có thể và khắc phục sự cố với giới hạn bộ nhớ đã biết.