2012-12-22 32 views
9

Ứng dụng của chúng tôi gặp phải sự cố thường xuyên trong trường (được phát hiện qua BugSense) do điều kiện thiếu bộ nhớ hoặc tham nhũng bộ nhớ, vì vậy để giúp tôi theo dõi chúng tôi đã bật như sau:GuardMalloc kết quả trong bộ nhớ ảo cạn kiệt

  • Malloc Scribble
  • Malloc Guard Edges
  • Guard Malloc
  • Objective-C Zombie Objects
  • Malloc stack Logging
  • Ngoại lệ nhật ký.

Sau khi tương tác với các ứng dụng cho một chút trong Simulator (ít hơn 30 giây), được thông báo sau được hiển thị:

GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused! 
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed 
GuardMalloc[TrafficDemoEmp-2430]: allocate_pages(): virtual memory exhaused! 
GuardMalloc[TrafficDemoEmp-2430]: expandUniquingTable(): VMCopyFailed 

Với Guard Malloc vô hiệu hóa các ứng dụng hoạt động tốt nhưng với nó kích hoạt các ứng dụng gặp sự cố với các thông báo này. Khi tôi hồ sơ với các công cụ rò rỉ và phân bổ không có rò rỉ được tìm thấy và giá trị Bytes trực tiếp cho tất cả các phạm vi bộ nhớ giữa 30 MB và 80 MB (tùy thuộc vào những gì nó đang làm tại thời điểm đó). Chắc chắn đó không phải là quá nhiều bộ nhớ cho một ứng dụng.

Tuy nhiên, thư trỏ đến ứng dụng của tôi bằng bộ nhớ quá nhiều nhưng tôi không chắc điều gì đang dẫn đến cạn kiệt bộ nhớ ảo. Có các công cụ hoặc trình gỡ rối khác có sẵn trong Xcode để trợ giúp không?

Cảm ơn,
David

+3

NSZombies sẽ gây ra bất cứ điều gì bạn tự do để không thực sự được giải phóng, và do đó xả bộ nhớ nếu bạn đang làm rất nhiều phân bổ. – user1118321

+0

Tắt zombie giải quyết vấn đề này. Cảm ơn. –

+0

Xin chào, cùng một sự cố đã xảy ra và đã được khắc phục bằng cách tắt zombie..Cảm ơn. Nhưng tôi không nhận được ảnh hưởng của nó, bạn có thể giải thích cho tôi được không? – Nikunj

Trả lời

9

User1118321 đã đúng. NSZombies là nguyên nhân của vấn đề này.

Nộp câu trả lời này để câu trả lời có thể được chấp nhận.

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