Ứng dụng của tôi, trong đó sử dụng ARC, không như sau:Giảm ký ức về UIImages từ máy ảnh sử dụng dụng cụ
- đăng một bức ảnh chụp bởi camera
- Nén hình ảnh để sử dụng như một hình thu nhỏ.
- Tôi làm điều này bằng [UIImage imageWithData: UIImageJPEGRepresentation (bản gốc, 0.1f)]
- tôi đặt tham khảo hình ảnh không nén để nil cho ARC để giải phóng bộ nhớ
Lặp đi lặp lại trình tự này sẽ có nghĩa là một vài nén hình thu nhỏ trên màn hình. Sau khoảng 7 hoặc 8 hình ảnh, ứng dụng bị lỗi do bộ nhớ thấp.
Trong Công cụ, tôi đang cố gắng sử dụng Phân bổ song song với Bộ nhớ Màn hình để tìm nguồn gốc của sự cố của tôi.
Một số số liệu thống kê cụ:
Allocation - Live Bytes nhảy khoảng 2 MB sau khi chụp ảnh, nhưng sau đó đi xuống bằng 1,5 MB sau khi tham khảo hình ảnh gốc được thiết lập để nil. Điều đó có vẻ là một điều tốt, nhưng ...
Đây là trạng thái cuối cùng của ứng dụng. #Living có vẻ rất cao so với Live Bytes, phải không?
Live Bytes #Living #Transitory Overall #Overall Bytes
3.72 MB 24538 80679 90.1 MB 105301
Memory Monitor (theo dõi đầu kiểm tra) - Ứng dụng của tôi bắt đầu lên 7,5 MB và dùng một kết quả hình ảnh trong đó tăng ~ 13 MB. Đối với nhà nước mà tôi liệt kê ở trên, Memory Monitor cho biết rằng ứng dụng đang chiếm 72,67 MB của "Real Memory" và 123,79 MB bộ nhớ ảo.
Cho rằng Byte trực tiếp rất nhỏ, tôi biết tôi đang làm điều gì đó đúng. Tuy nhiên, vì dấu chân bộ nhớ ở những nơi khác lớn, tôi cũng chắc chắn rằng tôi đang làm điều gì đó rất sai. Bất kỳ ý tưởng gì đó có thể là gì, hoặc làm thế nào để theo dõi nó xuống?
+1 cho câu hỏi hay. Làm thế nào bạn tải hình ảnh của bạn để hiển thị trên màn hình? Bạn đang sử dụng '[UIImage imageNamed:]'? – Rog
Anh ta nói anh ta sử dụng camera. –
Mục đích của dòng này là gì? [Hình ảnh UIImageWithData: UIImageJPEGĐại diện (ban đầu, 0.1f)] Bạn đang nén hình ảnh và sau đó giải nén ngay lập tức. Kết quả chỉ là một sự lãng phí chất lượng hình ảnh và thời gian CPU. –