2013-04-02 34 views
6

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:

enter image description here

Cả hai bộ nhớ thực và ảo là cao nhất cho quá trình này:

enter image description here

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ơ: enter image description here

+0

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? –

+0

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

+0

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. –

Trả lời

1

Tôi tìm thấy một người đang gặp phải một vấn đề tương tự ở đây:

Mysterious CoreImage memory leak using ARC

Câu trả lời (Tôi thực sự hy vọng nó là) xuất hiện để bắt đầu sử dụng NSData dataWithContentsOfFile: và sau đó tạo ra một UIImage imageWithData:. Bạn đã chọn một hình ảnh? Viết nó vào một tập tin tạm thời và đọc lại. Tôi không tin tưởng bất kỳ phương pháp hình ảnh nào khác, như trong 12 giờ thử nghiệm của tôi dường như hoạt động không chính xác trong iOS 6.1.2 cho các lượt xem hình ảnh lớn.

+0

Được thăng hạng để làm bài tập về nhà của bạn rất tốt. Xem thêm câu trả lời của tôi ở đây: http://stackoverflow.com/a/15694549/341994 cùng với các ý kiến ​​theo dõi nó. Khung công tác ImageIO cung cấp cho bạn rất nhiều tùy chọn có thể rất hữu ích và tránh được bộ nhớ đệm ẩn của UIImage imageNam nằm ở trung tâm của rất nhiều vấn đề về bộ nhớ. – matt

Các vấn đề liên quan