2015-05-18 14 views
6

Tôi nhận được cảnh báo bộ nhớ thường xuyên trong đơn đăng ký của mình nhưng tôi không biết tại sao. Đây là ảnh chụp các công cụ phân bổ."Máy ảo ẩn danh" trong các công cụ phân bổ có nghĩa là gì?

Instruments

tôi biết rằng chúng tôi không có bất kỳ quyền kiểm soát bộ nhớ ảo được gán cho chúng tôi nhưng tôi đang cố gắng để hiểu được những thông tin nào mà số lượng 26.50 MB nghĩa cho một nhà phát triển.

 
1. What does a high VM means ? Does it lead to a jetsam ? Is that cause of any other concern ? 
2. Is this value dependent on device ? 
3. Does a low vm means that your app is memory efficient 
4. Does a high VM leads to memory warnings in your app ? 
5. What cause this value to change ? 
6. What steps should a developer take when they see a high vm for their app (like 300 MB) ? 
7. Is VM tracker instrument related to this value ? 

Trả lời

8

VM ẩn danh bao gồm rất nhiều thứ, một số trong đó là những thứ bạn muốn giảm thiểu và một số thứ thường ít quan trọng hơn. Phiên bản ngắn của "máy ảo ẩn danh" là địa chỉ của nó mà bạn đã lập bản đồ nhưng không được đặt tên. Phân bổ đống được "đặt tên" cho phép bạn theo dõi chúng dưới dạng đối tượng. Nhưng có rất nhiều (và rất nhiều) những thứ không phản đối rơi vào nhóm "máy ảo ẩn danh".

Những thứ được phân bổ với malloc có thể được bật trong vùng này. Nhưng cũng có bộ nhớ ánh xạ các tập tin. Tệp thực thi của bạn là một tệp ánh xạ bộ nhớ, nhưng vì nó không bao giờ bị bẩn, một phần của nó có thể được hoán đổi. Vì vậy, "nó phức tạp." Nhưng trong các điều khoản lớn, mơ hồ, vâng, bạn quan tâm đến phần này, nhưng bạn có thể không quan tâm đến nó nhiều lắm. Phân bổ đống có xu hướng theo dõi các công cụ ObjC của bạn. Máy ảo ẩn danh thường theo dõi những thứ mà bạn không có nhiều quyền kiểm soát trực tiếp (như bộ nhớ sao lưu CALayer).

Tất cả những gì đã nói, đầu ra Dụng cụ bạn cung cấp không giống như bất kỳ vấn đề lớn nào. Tôi nghi ngờ nó không phải là dấu hiệu của một thời gian bạn đang áp lực bộ nhớ. Bạn sẽ cần phải có được mình vào một tình huống cảnh báo bộ nhớ và xem những gì đang xảy ra sau đó, và đào sâu vào chi tiết cụ thể của những gì đang sử dụng bộ nhớ.

Để biết thêm chi tiết về điều này, bạn nên xem WWDC 2013 session 704 "Building Efficient OS X Apps" sẽ đi sâu vào phần lớn điều này. Mặc dù iOS có hệ thống bộ nhớ hơi khác và một số công cụ OS X không khả dụng trên iOS, nhiều khái niệm vẫn được áp dụng.

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