Android MAT memory leak analytics (Eclipse IDE)!
Bài đăng này đã không được cập nhật trong 3 năm
Trong quá trình xây dựng ứng dụng Android, đặc biệt là các ứng dụng có sử dụng nhiều ảnh, 1 trong những lỗi thường xuyên xuất hiện và gây rất nhiều khó khăn cho các developer khi muốn debug và fix bug. Memory Analyzer tool (sau đây sẽ gọi tắt là MAT) sẽ cho phép chúng ta tracking memory và tìm ra những điểm phát sinh lỗi OutOfMemory trong application. Bài viết này xin được giới thiệu về việc sử dụng MAT trong Eclipse.
1: What is Memory leak
GC sẽ giải phóng các object nếu không còn bất kỳ 1 đối tượng khác liên quan đến đối tượng này. Nếu còn bất kỳ 1 đối tương nào khác còn tham chiếu đến 1 đối tượng thì GC sẽ không thể giải phóng nó.
2: Cài đặt MAT trong eclipse: Từ màn hình Eclipse vào Windows/Preference->Instanll new software. Sử dụng Update Site: http://download.eclipse.org/mat/1.4/update-site/
hoặc Archived Update Site: MemoryAnalyzer-1.4.0.201406041413.zip (12 MB)
3: Hướng dẫn sử dụng MAT:
Tạo 1 ứng dụng Android đơn giản để sử dụng MAT thống kê bộ nhớ. Build ứng dụng, mở DDMS trong Android. Bạn sẽ nhìn thấy list các ứng dụng đang chạy. Bạn chọn ứng dụng để track Memory. Click Update heap button trong device session. Click Cause GC button. Tại đây bạn có thể nhìn thấy 1 vài thông tin cơ bản vể bộ nhớ đang được sử dụng. Nó được update sau mỗi lần GC.
Đóng ứng dụng. Hoặc sử dụng 1 vài chức năng … sau đó click button DUMP HPROF file trong device session và lưu lại file hprof. Có thể lấy heap dump (hprof) bằng cách khác với android.os.Debug.dumpHprofData () .
4: HPROF file overview: Tại màn hình show HPROF data, chọn Histogram, Bạn sẽ có thể tìm được nhưng object,class dựa trên package name đang chiếm dụng bao nhiêu bộ nhớ. Chon show object by class:
Từ đây trong quá trình debug ta có thể kiểm tra tại những điểm nghi ngờ phát sinh lỗi OutOfMemory. Với việc dump memory sau mỗi luồn xử lý, developer có thể kiểm tra xem bộ nhớ đã được giải phóng hay chưa. Với MAT tool, các developer có thể giảm bớt lỗi ám ảnh với OutOfMemory Error.
All rights reserved