2013-06-09 34 views
9

Các ứng dụng của chúng tôi đang hoạt động trên cửa hàng ứng dụng. Tôi muốn nhận ra các sự cố trong bộ nhớ mà một số người dùng đang gặp phải. Tôi hiểu không có cách nào để 100% nhận ra một sự cố bộ nhớ. Có cách nào để nhận ra những sự cố này (với một xác suất khá lớn) bằng cách thực hiện một số logic trong applicationDidReceiveMemoryWarning không? (Tôi không nói về việc tìm kiếm nó trong xcode trong thời gian phát triển, tôi đang nói về mã sẽ nhận ra sự cố bộ nhớ từ người dùng thực tế và sẽ ghi lại nội dung nào đó vào tệp)Nhận biết sự cố hết bộ nhớ (IOS)

+0

Công cụ sử dụng (cmd + I) thực hiện theo phân bổ. – Levi

+0

Mặc dù đó là một tính kỹ thuật: ứng dụng của bạn bị chấm dứt do bộ nhớ thấp không thực sự là một 'sự cố' (mặc dù có vẻ như nó là do người dùng của bạn). – occulus

+0

Nói chung, không. Tuy nhiên, nguyên nhân có khả năng nhất của tình trạng thiếu bộ nhớ là sử dụng UIImage không chính xác dẫn đến quá nhiều hình ảnh được giữ trong bộ nhớ cùng một lúc. Một nguyên nhân rất có khả năng là các vòng đếm đếm ngược trong ViewControllers, mà các bộ điều khiển khung nhìn khác theo cách gây ra một vòng lặp. Vấn đề là, những sự cố này thường chỉ hiển thị trong sản phẩm của bạn sau khi nó được phát hành và nó đang chạy trên thiết bị người dùng cuối. Chỉ có một quá trình phát triển rất cẩn thận và các đánh giá mã có thể ngăn chặn loại vấn đề này. – MoDJ

Trả lời

0

Tìm thông báo applicationWillTerminate trong ứng dụng của bạn đại biểu. Điều này được gọi nếu ứng dụng của bạn bị hệ thống chấm dứt (do bộ nhớ thấp), nhưng không phải nếu người dùng rời khỏi ứng dụng theo cách thông thường bằng cách nhấn phím chủ. Lưu ý: nếu ứng dụng của bạn ở chế độ nền và bộ nhớ hết, ứng dụng của bạn sẽ bị giết mà không có bất kỳ tin nhắn nào được gửi tới ứng dụng đó.

YMMV, đặc biệt là với các phiên bản iOS cũ hơn và đáng nghiên cứu để đảm bảo rằng điều này là chính xác.

Hình ảnh tại this blog post khá thông tin (mặc dù hơi ngày).

Mọi chi tiết, thấy How to know whether app is terminated by user or iOS (after 10min background)

+2

sẽ applicationWillTerminate xảy ra mỗi khi ứng dụng được chấm dứt vì bộ nhớ (khi nó ở phía trước)? Ngoài ra, nó sẽ được gọi là cũng khi người dùng đóng ứng dụng hoàn toàn (không di chuyển nó vào nền)? – AJ222

-3

Thứ nhất Phân tích ứng dụng của bạn bằng cách nhấp vào sản phẩm ở thanh menu trên cùng của Xcode của bạn và bấm vào phần phân tích nó sẽ cho bạn thấy số lượng rò rỉ trên trong việc áp dụng và có thể đưa bạn đến nơi bị rò rỉ. Đây là cách bạn có thể tìm thấy rò rỉ bộ nhớ và sửa chữa nó. Thứ hai nó ở trên không làm việc sau đó nhìn thấy bộ điều khiển xem nơi tai nạn xảy ra và kiểm tra xem bạn đã để lại bất kỳ đối tượng để phát hành. Hy vọng điều này có thể giúp bạn giải quyết vấn đề của mình.

+2

Bạn đã trả lời một câu hỏi khác cho câu hỏi đó. Ông thậm chí còn nói trong bài viết của mình "Tôi không nói về việc tìm kiếm nó trong xcode trong thời gian phát triển". – occulus

-2

Có tốt thư viện của bên thứ ba có sẵn để theo dõi hiệu suất ứng dụng iOS của bạn trong time.Below thực 2 cũng được biết đến của thể loại như:

  1. Google Analytics
  2. Crittercism

Họ theo dõi và gửi báo cáo sự cố từ thiết bị của người dùng đến tài khoản của bạn. Nhờ đó, họ cũng thông báo cho bạn về các sự cố xảy ra do bộ nhớ thấp!

https://developers.google.com/analytics/devguides/collection/ios/

https://www.crittercism.com/

Hy vọng điều này có thể giải quyết vấn đề của bạn lên đến một mức độ nào.

3

Trong khi tôi đang tìm kiếm bất kỳ dịch vụ hoặc thư viện mà cho tôi theo dõi oom, tôi chỉ có thể tìm thấy bài viết này từ kỹ thuật Facebook:

https://code.facebook.com/posts/1146930688654547/reducing-fooms-in-the-facebook-ios-app/

Ý tưởng là để suy ra lý do tại sao các ứng dụng cần phải được khởi chạy, kiểm tra các khía cạnh khác nhau (như ứng dụng ở chế độ nền, nếu có bản cập nhật ứng dụng/hệ điều hành, ...).

Loại bỏ tất cả các lý do có thể khác có thể buộc thoát ứng dụng trước đó, bạn có thể biết lý do có phải là nền tảng hết bộ nhớ hoặc không có bộ nhớ ngoài.

Sẽ thật tuyệt nếu có thư viện triển khai quy trình bài viết trên Facebook. Nhưng ngày nay tôi không thể tìm thấy bất kỳ, có lẽ có một số lý do mà làm cho điều này khó khăn hoặc có thể không thể thêm nó như là một sdk.

Nếu có ai biết bất kỳ dịch vụ nào, vui lòng chia sẻ với mọi người bằng nhận xét hoặc câu trả lời mới.

Edit:

tôi đã phát hiện ra github này (https://github.com/jflinter/JRFMemoryNoodler) với một thực hiện các bài thủ tục Facebook. Tôi chưa thử, nhưng chúng tôi sẽ triển khai nó trong các ứng dụng của chúng tôi để thử nó.

+0

bạn đã thử nó chưa? bất kỳ thành công nào? – Johanisma

+0

@Johanisma, chúng tôi sẽ không triển khai ứng dụng của chúng tôi với thư viện này (JRFMemoryNoodler) nhưng trước khi đóng bản dựng, chúng tôi đã quyết định xóa nó. Bởi vì khi chúng tôi buộc sự cố ứng dụng (trong quá trình phát triển), chúng tôi không chắc chắn rằng công cụ này có thể giúp chúng tôi phát hiện OOM khác (có thể chúng tôi không giải thích chính xác sự cố hoặc không hoạt động tốt). Nếu bạn tìm thấy một cái gì đó, chia sẻ nó bởi vì vẫn còn có OOM. –

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