Ứ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
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
Tắt zombie giải quyết vấn đề này. Cảm ơn. –
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