2013-11-02 33 views
9

Chúng tôi có một ứng dụng iOS toàn diện với chế độ Hybrid - một UIWebView giữ phần chính của ứng dụng web trong JS. Nó hoạt động tốt trên iOS6, nhưng gần đây chúng tôi thấy nghiêm trọng trong vụ tai nạn bộ nhớ trên tất cả các thiết bị iOS7 - iPad, iPhone 4/4S và iPhone 5/5C/5S. Chúng tôi đã phân tích mức tiêu thụ bộ nhớ cả trên iOS6 và 7 trong trình mô phỏng iOS. Bằng cách thực hiện tương tác tương tự trong ứng dụng, mức tiêu thụ bộ nhớ của WebView luôn nhỏ hơn 200MB trong iOS6, trong khi nó có thể vượt quá 800MB trên iOS7!

Chúng tôi đoán có một số vấn đề quản lý bộ nhớ nghiêm trọng trong WebView trên iOS7. Nhưng thiếu công cụ để lược tả JS trong WebView, chúng ta không thể định vị nguyên nhân gốc rễ. Ở đây chúng tôi muốn hỏi xem có ai có vấn đề tương tự hay không, và bất kỳ công cụ/cách tiếp cận nào cũng có thể giúp tìm hiểu sâu hơn về UIWebView để tìm hiểu vấn đề chính xác. Cám ơn.rò rỉ bộ nhớ UIWebView iOS7

+1

Điều này có vẻ liên quan đến http://stackoverflow.com/questions/19150961/ios7-webkit-crashes-frequently-not-freeing-up-memory –

Trả lời

0

Cả UIWebView và trình duyệt Safari gốc với iOS7 dường như gặp sự cố trong quản lý bộ nhớ khi xử lý đối tượng json. Nếu bạn có từ điển có cấu trúc lồng nhau sâu và bạn có một khóa là chuỗi số, và nó nhỏ hơn 99999, bạn có thể đã nhận được cảnh báo bộ nhớ thường xuyên.

một cái gì đó như thế nào,

{"**98304**": 
    {"key": 
     {"2ndLevelKey": 
      { 
       "address":"10928 Homestead rd","city":"Cupertino","Zip":95014 
      } 
     } 
    } 
} 

Công việc xung quanh là đơn giản, hãy cố gắng thay thế chìa khóa "98.304" một cái gì đó như "ID98304". Hy vọng bạn đã giải quyết được vấn đề rồi. :)

+0

Khi sự cố này sẽ được khắc phục? – wawanopoulos

+0

lỗi 15476175 đã được gửi tới Apple vào ngày 14 tháng 11, không có cập nhật trạng thái cho đến thời điểm này. –

1

Tôi không có đủ danh tiếng để upvote hoặc bình luận. Vì vậy, tôi nghĩ rằng một "câu trả lời" là cách duy nhất mà tôi có thể đóng góp.

Tôi đồng ý với đóng góp của Ming Zhu. Tôi thấy rằng nếu bạn có 5 chữ số (9999 < phím < = 99999) mức sử dụng bộ nhớ trên iOS 7 sẽ phát nổ.

Dưới đây là mã ví dụ mà tôi đã đến khi cố gắng tái tạo những gì đã làm hỏng ứng dụng của tôi.

tempobj = {}; 

for(var i=1; i<2000; i++){ 
    var temp = {}; 
    tempobj[i] = temp; 
    temp[98304] = "hello world"; 
} 

Tôi cũng đã gửi lỗi cho táo trước khi tìm thấy luồng ngăn xếp này, nhưng có vẻ như đó là điều tốt.