2010-04-14 6 views
5

Tôi có một ứng dụng iPad bị lỗi do bộ nhớ thấp. Tuy nhiên, Instruments không hiển thị bất kỳ lượng bộ nhớ đáng kể nào được phân bổ bằng ObjectAlloc - nó vẫn dưới 1MB cho toàn bộ thời gian của ứng dụng. Rò rỉ cho thấy ít hơn 1kB bị rò rỉ trong quá trình chạy. Bộ nhớ màn hình cho thấy bộ nhớ miễn phí trên các thiết bị giảm đáng kể với việc sử dụng, cuối cùng giảm đến mức nó hết bộ nhớ. Đây là ảnh chụp màn hình từ Công cụ:Hết bộ nhớ nhưng không thấy phân bổ đối tượng quá mức trong các Công cụ

Instruments screenshot http://www.freeimagehosting.net/uploads/0758372561.png

Tôi hoàn toàn bối rối. Theo như tôi có thể nói, điều này về cơ bản nói rằng như xa như ứng dụng của tôi là có liên quan, tôi không bao giờ sử dụng nhiều hơn khoảng 750kB, nhưng thiết bị vẫn còn hết bộ nhớ vật lý, gây ra ứng dụng của tôi lối thoát.

Tôi mới để gỡ lỗi các vấn đề về bộ nhớ với XCode. Tôi có đo sai điều này không? Có cách nào khác để xem bộ nhớ này đang đi đâu không?

+1

Bạn có phân bổ bộ nhớ không phải là đối tượng Objective-C (ví dụ, sử dụng 'malloc') không? –

Trả lời

1

Nếu bạn nhìn vào hàng Rò rỉ, bạn đã có một sự rò rỉ bộ nhớ toàn bộ tất cả xảy ra liên tiếp. Kiểm tra để đảm bảo rằng bạn đang phát hành bất kỳ đối tượng nào bạn đã phân bổ hoặc lớp của bạn sở hữu các tham chiếu đến.

+1

Hmm, có lẽ tôi đang đọc sai, nhưng có vẻ như tôi chỉ có một khoảnh khắc mà có một vài rò rỉ (thanh màu cam), tổng cộng là 212 byte bị rò rỉ (các thanh màu xanh). Tui bỏ lỡ điều gì vậy? –

+1

Điều đó trông giống như rò rỉ nhỏ. Bạn có thể muốn "Tạo và vẫn còn sống" để hiển thị bộ nhớ chưa được giải phóng. Ứng dụng sẽ làm gì? Tôi tự hỏi liệu có bộ nhớ nào đó không bị tính phí cho quá trình của bạn. –