2010-11-02 31 views
26

Tôi đang gặp khó khăn trong việc khắc phục sự cố liên quan đến bộ nhớ trong ứng dụng iPad của mình, nhưng điều tốt là tôi đã học về "đống ảnh" vì lý do đó. Điều tồi tệ là, tôi vẫn không thể tìm ra một số thông tin được cung cấp cho tôi có nghĩa là gì. alt text<non-object> trong Phân bổ "heapshots" có nghĩa là gì?

Vì vậy, những đối tượng không còn tồn tại và chiếm hầu hết bộ nhớ được mô tả trong Tăng trưởng Heap là gì? Có thể loại bỏ chúng không? Dường như hầu hết trong số họ có liên quan đến các hoạt động vẽ khác nhau, CALayer, ngữ cảnh và vv (Danh mục: "Malloc" hoặc "Realloc"). Tôi có thể cung cấp thêm chi tiết nếu cần.

Trả lời

20

Điều đó có nghĩa là khối bộ nhớ đã được cấp phát không phải cho một đối tượng (ví dụ: cấu trúc tinh khiết c). Thông thường chúng được phân bổ theo mã khung hệ thống, vì vậy có một số đối tượng khác bị rò rỉ. Ví dụ. nếu bạn quên phát hành UIView, thì lớp của nó cũng sẽ không được giải phóng.

Bạn có thể mở bảng điều khiển "Chi tiết mở rộng" (xem menu "Chế độ xem") và phân tích ngăn xếp cuộc gọi. Hãy nhớ rằng một trong những release bạn quên có thể dẫn đến rất nhiều rò rỉ bộ nhớ, vì vậy hãy thử khắc phục các rò rỉ dễ nhất và sau đó kiểm tra xem các rò rỉ khác có biến mất hay không.

Một mẹo khác. Bạn có thể vô hiệu hóa khối chức năng của ứng dụng của bạn từng cái một và xem liệu rò rỉ có biến mất hay không. Vì vậy, bạn sẽ có thể xác định vị trí module (lớp, khối chức năng, vv) nơi nó xảy ra.

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