2015-05-25 11 views
6

Tôi đang sử dụng leakcanery để tìm rò rỉ bộ nhớ trong Android. Tôi đã tìm và sửa tất cả các lỗ rò Activity. (ngạc nhiên khi biết có rất nhiều BTW!). Tôi cũng đã thêm đồng hồ refWatcher cho tất cả Fragment s của mình.Nguyên nhân tiềm ẩn gây rò rỉ bộ nhớ trong Android

Câu hỏi 1: Có điều gì khác mà tôi nên xem có thể gây rò rỉ bộ nhớ đáng chú ý không?

Câu hỏi 2: là không xem Fragment rò rỉ dư thừa từ một Fragment giữ một tham chiếu đến Activity của nó? Tôi vẫn nhận được thông báo, phải không? : -/

Câu hỏi 3: Khi tôi kiểm tra màn hình bộ nhớ trong studio android, nó sẽ hiển thị mức tăng sử dụng bộ nhớ theo thời gian. Có phải dấu hiệu của một rò rỉ bộ nhớ khổng lồ hay hệ điều hành Android là tốt và nó chỉ cho tôi nhiều bộ nhớ hơn? Làm thế nào tôi có thể tìm thấy chắc chắn?

+1

bạn có thể kiểm tra các công cụ này: https://developer.android.com/tools/debugging/debugging-memory.html và công cụ eclipse MAT để biết thêm chi tiết nó sẽ giúp bạn –

Trả lời

5

Có điều gì khác mà tôi nên xem có thể gây ra rò rỉ bộ nhớ đáng chú ý không?

  • Tuyên bố trường thành viên static gần như đảm bảo rò rỉ bộ nhớ.
  • Các lớp ẩn danh vượt quá tuổi thọ của lớp cha, chẳng hạn như Volley Request s, cũng tạo ra rò rỉ bộ nhớ, vì chúng chứa tham chiếu ngầm đến phụ huynh Activity và nếu Activity biến mất trước khi cuộc gọi yêu cầu hoàn tất, rò rỉ bộ nhớ diễn ra.

là không xem Fragment rò rỉ dư thừa từ một Fragment giữ một tham chiếu đến Activity của nó?

A Fragment không "giữ" tham chiếu đến Activity. Tham chiếu được cung cấp bởi FragmentManager. Nhưng khuôn khổ quản lý nội bộ này, vì vậy bạn không cần phải lo lắng về nó.

Khi tôi kiểm tra màn hình bộ nhớ trong studio android, nó sẽ hiển thị mức tăng sử dụng bộ nhớ theo thời gian. Có phải dấu hiệu của một rò rỉ bộ nhớ khổng lồ hay hệ điều hành Android là tốt và nó chỉ cho tôi nhiều bộ nhớ hơn? Làm thế nào tôi có thể tìm thấy chắc chắn?

Tốc độ tăng trưởng bộ nhớ của ứng dụng là tự nhiên và bộ nhớ được dọn sạch trên các lần truy cập sau của bộ thu gom rác. Trong các ngôn ngữ có máy ảo và bộ thu gom rác tự động, lập trình viên có ít hoặc không có quyền kiểm soát việc cấp phát bộ nhớ. Ngoài việc tạo ra các rò rỉ bộ nhớ nhỏ, có rất ít lập trình viên có thể làm để làm hỏng quá trình quản lý bộ nhớ.

+0

"Tuyên bố trường thành viên tĩnh gần như đảm bảo rò rỉ bộ nhớ . " - Xin lỗi nhưng không có cơ sở cho điều đó. Tôi sử dụng tĩnh tất cả thời gian và mã nguồn Android chính nó có rất nhiều của nó. – AndroidDev