16

Tôi hiện đang sử dụng iOS, nhưng câu hỏi cũng áp dụng cho Android. Tôi đang nhìn vào đồ thị bộ nhớ trong Xcode, và ứng dụng của tôi bị treo bất cứ khi nào nó đạt khoảng 240MB, tôi tin rằng iOS đang giết nó vì nó chiếm quá nhiều bộ nhớ.Bạn có thể kiểm soát mức sử dụng bộ nhớ trong Cordova như thế nào?

Tôi có thể liên tục gặp sự cố khi điều hướng giữa các trang trong ứng dụng. (Đó là một SPA, phía máy khách HTML rendering.) Nếu tôi ngừng điều hướng trong một phút, bộ nhớ sẽ giảm xuống còn 140MB.

Đây là cùng một trang trong OSX Chrome:

enter image description here

Trong trường hợp này, sau khi ngừng chuyển hướng, bộ nhớ không giảm trên riêng của nó. Thay vào đó, vách đá ở cuối biểu đồ là tôi nhấn nút thu gom rác thải (giảm xuống từ 170MB đến 60MB).

Làm cách nào để ngăn ứng dụng của tôi bị lỗi?

  1. Có tương đương với nút thu gom rác mà tôi có thể gọi bên trong Cordova không?
  2. Tôi có thể nhận iOS để cung cấp cho ứng dụng của tôi một khoản trợ cấp bộ nhớ lớn đặc biệt không?
  3. Nếu người dùng điều hướng giữa các trang X lần trong vòng một khoảng thời gian phút, tôi có thể đưa ra một màn hình time-out mà nói với họ rằng họ không thể sử dụng các ứng dụng cho phút tiếp theo trong khi đi thu gom rác thải XD
  4. Bất kỳ cách nào để giảm mức sử dụng bộ nhớ trên độ dốc lên, khi JS đang hiển thị HTML?

Ngoài ra, đây là biểu đồ Chrome có nút HTML - tăng trưởng tương ứng nhưng các nút vẫn ở cùng một bộ sưu tập rác sau cấp.

enter image description here

+0

bạn có hồ sơ này trên iOS, đặc biệt là bị rò rỉ không? mà có vẻ như rất nhiều bộ nhớ khi bạn xem xét những gì còn lại cho các ứng dụng sau khi bộ nhớ đói iOS mất pound thịt trong thiết bị. Và tôi không biết cách nào để iOS phân bổ bộ nhớ bổ sung cho bạn, ngay cả đối với các ứng dụng 'gốc'. – YvesLeBorg

+0

Sửa tôi nếu tôi sai, nhưng tôi tin rằng vì mọi thứ đang diễn ra trong UIWebView, việc lược tả trong devtools sẽ bắt được những thứ giống như trong hồ sơ iOS sẽ bắt được? Và kể từ khi đống đi xuống đường cơ sở sau khi thu gom rác thải, điều đó có nghĩa là không có rò rỉ? – Loren

+1

duh, xấu của tôi. Tôi đã nhìn vào mã nguồn gốc iOS, và tìm thấy một cái gì đó kỳ lạ. Đăng câu hỏi trên github, sẽ quay lại với câu trả lời. – YvesLeBorg

Trả lời

4

Bạn có thể thử sử dụng các plugin WKWebView, mà đôi khi có thể giảm sử dụng bộ nhớ iOS cho Cordova apps.

+0

Vui mừng khi biết nó hoạt động rất tốt! Đó là một cải tiến tuyệt vời. – Reubend

+0

Thực ra, tôi nghĩ bộ nhớ WKWebView không được bao gồm trong biểu đồ bộ nhớ XCode [1], vì tôi vẫn nhận được cảnh báo bộ nhớ và lỗi. Tôi nghĩ ít thường xuyên hơn. [1] https://github.com/practicalmeteor/meteor-wkwebview/issues/1#issuecomment-130521832 – Loren

+0

@Reubend Có điều gì giống như vậy cho Android không? – VaTo

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