Tôi gặp vấn đề về bộ nhớ với một trong các ứng dụng của mình và tôi đã xác định "Bộ nhớ thực" như được xác định trong Công cụ> Giám sát hoạt động là thủ phạm có thể.Quản lý bộ nhớ iOS iOS - cách giải phóng "Bộ nhớ thực" được sử dụng bởi UIImageViews, UIScrollViews?
Ứng dụng của tôi phân bổ UII lớn trong UIScrollViews. Có một CIImageFilter được áp dụng cho một trong những hình ảnh. Trình giám sát hoạt động cho thấy rằng khi lần đầu tiên đẩy bộ điều khiển xem có chứa các cuộn với hình ảnh lớn, việc sử dụng bộ nhớ thực thực sự nhảy vọt lên khoảng 300mb. push tiếp theo/pops nâng nó lên khoảng 500MB:
tôi đọc rằng "Sống Bytes" không đếm bộ nhớ được sử dụng bởi kết cấu và CALayers, vì vậy câu hỏi của tôi là: Làm thế nào để đúng cách giải phóng bộ nhớ được sử dụng bởi CALayers của Hình ảnh/Scrollviews của tôi?
Xem bộ nhớ thực sử dụng biểu đồ pie màu xanh ở bên phải:
Cả hai bộ nhớ thực và ảo là cao nhất cho quá trình này:
gì làm tôi bực mình là tôi đang cố gắng dọn dẹp các cuộn và hình ảnh lớn của mình khi popping bộ điều khiển đó và các số cho "byte trực tiếp" giảm xuống còn khoảng 5mb, trong khi "Bộ nhớ thực "Vẫn outrageously cao (~ 500 mb):
ContainerScrollView* container = ...;
[container.view removeFromSuperview];
container.view = nil;
Đây là phân bổ hồ sơ:
Trong các bài kiểm tra, mỗi khi bạn tạo nhanh một lần xem mới, bạn có đang tạo hình ảnh giống nhau không? –
Bạn đã thử kích hoạt cảnh báo bộ nhớ để đảm bảo rằng mọi bộ đệm hệ thống thực hiện việc của họ để phản hồi và (hy vọng) thả bất kỳ dữ liệu không sử dụng nào? Nhớ 'imageNamed' sử dụng bộ đệm. – jhabbott
Cảnh báo bộ nhớ được kích hoạt. Scrollviews nhận hình ảnh từ thư viện ảnh mà người dùng chọn. –