2013-10-02 15 views
5

Tôi hiện đang làm việc trên một trò chơi mà tôi đã bắt đầu trước đây. Tiến trình tốt và mọi thứ diễn ra trôi chảy, nhưng tôi quyết định thử sử dụng các công cụ XCode để kiểm tra xem có bất kỳ rò rỉ nào trong mã của tôi không. Tôi đang sử dụng ARC và các đối tượng mới chỉ được thêm khi những người khác bị xóa (một phần của hoạt động bên trong trò chơi của tôi), nhưng tổng kích thước bộ nhớ vẫn tăng lên khi nó chạy.iOS Liên tục phát triển việc sử dụng bộ nhớ

Trò chơi của tôi hoàn toàn được tạo theo thủ tục và không yêu cầu nội dung, nó cũng chỉ sử dụng một vài đa giác được ánh xạ chỉ với màu sắc, do đó không có kết cấu. Tôi hy vọng nó chỉ cần một vài MB để chạy (mà nó bắt đầu với) nhưng nó chỉ tiếp tục phát triển.

Bây giờ, tôi nhận thấy điều gì đó thú vị ... Điều gì sử dụng hết phần lớn dữ liệu là một mục có tên IOAccelResource. Đó là lẻ bởi vì tôi không sử dụng bất kỳ dữ liệu gia tốc/con quay hồi chuyển/la bàn nào. Tôi thậm chí không có khung CoreMotion được tham chiếu trong dự án của tôi.

Việc sử dụng chính thứ hai của dữ liệu là một bộ sưu tập của bốn mallocs tiếp tục phát triển. Có một vài chi tiết mà vẫn tương đối giống nhau.

Hai mục này không được coi là rò rỉ theo chương trình. Và khi tôi nói với XCode để phân tích mã của tôi, nó không trỏ đến bất kỳ vấn đề nào.

Tất cả các mục nhập khác là khá nhỏ và dao động xung quanh cùng một điểm hoặc chỉ giữ nguyên.

Đây là một ảnh chụp màn hình của các mục rắc rối: Entries

Bất cứ lời khuyên?

Trả lời

8

Nếu bạn đang đề cập đến "Tổng số byte" hoặc "#Overall (phần tử)" tiếp tục phát triển, điều đó thường không phải là vấn đề khi theo dõi tổng mức sử dụng bộ nhớ (nói cách khác, nó không giải thích ký ức).

Điều bạn nên xem là "Byte trực tiếp" và "#Living (elements)" và đảm bảo rằng nó phù hợp với mong đợi của bạn.

Bạn cũng sẽ thấy rằng nếu "Tổng số byte" tiếp tục phát triển, điều đó sẽ không làm hỏng ứng dụng của bạn. Mặt khác, nếu "Live Bytes" tiếp tục phát triển, điều đó sẽ làm hỏng ứng dụng của bạn.

Apple đã nhận ra rằng có quá nhiều thông tin trong hồ sơ công cụ và đó là lý do tại sao trong xCode5, nó đã cất thông tin quan trọng vào xCode trực tiếp: Khi chạy ứng dụng của bạn, hãy nhấp vào biểu tượng thứ 6 (debug Navigator) trong Điều hướng (cột bên trái của xCode). Bạn sẽ thấy chỉ báo Bộ nhớ sẽ chỉ theo dõi "Byte trực tiếp".

Ngoài ra nếu bạn có quyền truy cập vào video WWDC 2013, hãy xem phiên 410: Khắc phục sự cố bộ nhớ.

Hy vọng điều này sẽ hữu ích.

+0

Ahh, cảm ơn người đàn ông! Tôi đã thực sự lo lắng điều gì đó rất nghiêm trọng đang diễn ra. Có vẻ như tôi đã quản lý bộ nhớ hoàn hảo! – Bananable

+11

Tôi đã tìm thấy điều này KHÔNG phải là trường hợp. Khi tôi nhìn vào các công cụ, ứng dụng của tôi hiển thị quản lý bộ nhớ hoàn hảo. Khi tôi nhìn vào biểu đồ bộ nhớ trong XCode, nó cho thấy rằng ứng dụng của tôi liên tục phân bổ khoảng 1,5MB bộ nhớ không được phát hành mỗi lần bộ hẹn giờ kích hoạt. Tôi muốn chấp nhận những phát hiện của Instruments và tiếp tục, nhưng tôi lo lắng. – CMVR

+4

Tương tự ở đây: Bộ nhớ bộ nhớ Xcode tiếp tục phát triển và phát triển, nhưng các công cụ Phân bổ + Rò rỉ chỉ ra rằng bộ nhớ đang được quản lý đúng cách. Không chắc tôi nên rút ra kết luận gì ... –

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