2012-11-06 13 views
7

Vì vậy, sau khi chạy ứng dụng Objective-C của tôi trong khoảng 8 giờ, cuối cùng máy tính của tôi sẽ hiển thị thông báo lỗi này. Nhưng sau 24 giờ sử dụng các thiết bị, nó chỉ hoàn thành khoảng 1% những gì ứng dụng có thể làm trong 8 giờ mà không có công cụ.Đĩa khởi động mac os x của bạn không còn chỗ trống cho bộ nhớ ứng dụng

Ứng dụng của tôi về cơ bản có hình dạng đầu vào và tạo lưới điều hướng.

Câu hỏi của tôi: Làm thế nào tôi có thể tìm ra vấn đề của mình ở đâu? Tôi chắc chắn một nơi nào đó trong ứng dụng của tôi, tôi yêu cầu bộ nhớ và không bao giờ giải phóng nó. Tôi chạy phân tích, tìm thấy một rò rỉ, nhưng không đáng kể và tôi đã sửa nó.

Tôi đang chạy Công cụ ngay bây giờ để phân bổ/rò rỉ nhưng sau 16 phút tôi không thấy bất cứ điều gì rõ ràng (tôi sẽ để cho nó tiếp tục đi).

Đây là một bản chụp của nơi nó ở vậy, đến nay: Instruments

Bất cứ ai có bất cứ ý tưởng về cách khác tôi có thể gỡ lỗi này? Tôi muốn có thể chạy điều này trong khoảng 20 giờ để nó có thể hoàn thành và nó chắc chắn sẽ chết:/

Cảm ơn bạn trước!

+0

Bạn có chắc chắn có rò rỉ không? Thuật toán của bạn có thể đơn giản tạo ra các cấu trúc dữ liệu có kích thước vượt quá bộ nhớ ảo có sẵn không? Một chương trình 64 bit có thể * địa chỉ * một lượng bộ nhớ thực sự đáng kinh ngạc, nhưng điều đó không có nghĩa là nó có thể * cấp phát * số lượng lớn tùy ý. Làm thế nào lớn bạn mong đợi dữ liệu của bạn để có được, khoảng? Làm cách nào bạn xác định điều đó? –

Trả lời

9

Bạn bị rò rỉ bộ nhớ như một nhà vô địch!

  • bật "chỉ theo dõi phân bổ sống" trong các công cụ phân bổ

  • bật "theo dõi tính tham khảo sự kiện" (hoặc bất cứ điều gì nó được gọi là)

  • tái chạy phiên của bạn và sắp xếp theo cột "Tổng số byte"

  • bắt đầu ở đầu, phân bổ bộ nhớ đói nhất và nhấp qua mũi tên nhỏ để xem tất cả các phân bổ đó đến từ đâu, tiếp tục ...

Nó rất giống với phân tích Heapshot và, do đó, this weblog article Tôi đã viết cách đây có thể hữu ích.

+0

Vì vậy, tôi đang thử phương pháp này, và tôi đã có nó chạy trong 23 giờ và nó đã hoàn thành 14 trong số 1131 nhiệm vụ cần thiết để hoàn thành. Thông thường, tất cả 1131 tác vụ mất khoảng 20 phút. Bất kỳ đề xuất nào về cách gỡ lỗi nơi nó thực sự có thể hoàn thành tất cả các nhiệm vụ:/Instruments vẫn đang chạy CPU @ 100% (trong số 800%), nhưng nó không thể theo kịp tôi đoán được – Geesu

+0

Đây là một liên kết đến kết quả xa: https://dl.dropbox.com/u/15806454/dump/stackoverflow_instruments.png – Geesu