2013-03-20 29 views
6

Ứng dụng của tôi đã bị lỗi rất nhiều, vì những lý do mà tôi đang cố gắng hiểu. Nó không đến nỗi nó bị rơi - nó bị giết bởi một bên ngoài "Unknown" quá trình:Công cụ phân bổ các công cụ của Xcode bỏ lỡ một chút

Processes 
    Name  <UUID>  rpages  recent_max  [reason]   (state) 

    test-app <....>  167111  167111  [per-process-limit] (frontmost) (resume) 

tôi có thể hiểu rằng nếu tôi được phân bổ một khối lượng lớn các bộ nhớ, hoặc một zillion khối nhỏ hơn, nhưng tôi m không làm bất cứ điều gì thái quá. Profiling with Instruments cho tôi biết rằng ứng dụng chỉ sử dụng khoảng 8 MB, thỉnh thoảng tăng tốc lên đến 13 MB hoặc hơn khi tôi tải một số nội dung lớn. Không có rò rỉ nghiêm trọng, và ứng dụng thường bị giết rất nhanh.

Một đồng nghiệp bắt đầu sử dụng hoạt động Monitory để kiểm tra mức sử dụng bộ nhớ của ứng dụng trong khi chạy trong trình mô phỏng và nhận thấy bộ nhớ tăng vọt khoảng 70 MB (tôi đoán mọi thứ có chút khác biệt trong trình mô phỏng) lên tới 800 MB khi bắt đầu sử dụng một thư viện nhất định. Vì vậy, tôi bắt đầu profiling trong giả lập thay vì trên thiết bị. Các công cụ phân bổ tiếp tục báo cáo rằng các ứng dụng sử dụng MB 8-ish, nhưng VM Tracker kể một câu chuyện:

Instruments screen shot

... Vì vậy, nó trông giống như VM Tracker có thể nhìn thấy một số sử dụng bộ nhớ đáng kể mà Phân bổ không phải là.

Tại sao công cụ Phân bổ thiếu 99% bộ nhớ mà ứng dụng này đang sử dụng?

Cập nhật: Trả lời câu hỏi nielsbot, tôi mất một cái nhìn sâu hơn về thông tin VM Tracker và phát hiện ra rằng phần lớn nhất của bộ nhớ mà tôi không nhìn thấy trong phân bổ là do Core Animation:

VM Tracker screenshot

+1

Tôi nghĩ rằng không gian ảo bao gồm những thứ như các khuôn khổ và chia sẻ bộ nhớ ánh xạ trong khi phân bổ có thể không ... – nielsbot

+0

Bạn thấy gì trong hiển thị Vùng? (Nhấp vào Tóm tắt, chuyển sang Khu vực, sắp xếp theo Kích thước ảo, lớn nhất đến nhỏ nhất) – nielsbot

+1

Trong thực tế - tôi nhận thấy ở đầu ra bạn đã dán vào câu trả lời của bạn, nó đề cập cụ thể "rpages" (trang thường trú). Tôi đoán bạn sẽ phải cố gắng giới hạn các trang thường trú của "khung nước" của khuôn khổ ... – nielsbot

Trả lời

2

tôi nghĩ rằng không gian ảo bao gồm những thứ như các khuôn khổ và chia sẻ bộ nhớ ánh xạ trong khi phân bổ có thể không ...

tôi đoán kích thước thường trú là gần gũi hơn với số tiền thực tế RAM được sử dụng. Bộ nhớ VM thuần túy chỉ có thể được ánh xạ không gian địa chỉ, không phải RAM thực tế được tiêu thụ.

Ví dụ, nhìn vào Safari, tôi thấy 1,92 GB bộ nhớ ảo ánh xạ, nhưng gần gũi hơn với 549 MB thường trú, mà tôi nghĩ rằng có ý nghĩa ... enter image description here

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