2011-01-27 40 views
21

Tôi muốn biết số lượng không gian heap được ứng dụng Android của tôi sử dụng theo hai cách: - lập trình - thông qua DDMS.Làm cách nào để phát hiện việc sử dụng kích thước heap của ứng dụng android

Tôi đã gọi this bài đăng, trước khi đăng tại đây. Trong bài viết đó, nó được đề cập rằng, Debug.getNativeHeapSize() trả về heapsize. Đây có phải là phương pháp chính xác tôi nên sử dụng để phát hiện kích thước heap theo chương trình không? Nếu vậy, tôi nên đăng nhập ở đâu để có được việc sử dụng ứng dụng của tôi đúng cách?

+3

Trong bài này http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-android Dianne cung cấp rất nhiều thông tin có thể hữu ích. –

Trả lời

55

đây là những gì tôi sử dụng:

public static void logHeap() { 
     Double allocated = new Double(Debug.getNativeHeapAllocatedSize())/new Double((1048576)); 
     Double available = new Double(Debug.getNativeHeapSize())/1048576.0; 
     Double free = new Double(Debug.getNativeHeapFreeSize())/1048576.0; 
     DecimalFormat df = new DecimalFormat(); 
     df.setMaximumFractionDigits(2); 
     df.setMinimumFractionDigits(2); 

     Log.d("tag", "debug. ================================="); 
     Log.d("tag", "debug.heap native: allocated " + df.format(allocated) + "MB of " + df.format(available) + "MB (" + df.format(free) + "MB free)"); 
     Log.d("tag", "debug.memory: allocated: " + df.format(new Double(Runtime.getRuntime().totalMemory()/1048576)) + "MB of " + df.format(new Double(Runtime.getRuntime().maxMemory()/1048576))+ "MB (" + df.format(new Double(Runtime.getRuntime().freeMemory()/1048576)) +"MB free)"); 
    } 
+0

Điều đó khá thú vị. –

+0

Cảm ơn bạn, Tôi có thể làm cho một phương pháp quản lý :) – delive

3

Có. Xin lưu ý rằng cũng có nhiều lượt xem trong DDMS và bạn có thể sử dụng MAT Eclipse giúp ích hơn, đặc biệt là theo dõi rò rỉ bộ nhớ NHƯNG và đây là một số lớn nhưng số bạn thấy chỉ tham chiếu bộ nhớ được quản lý bởi VM. Có rất nhiều hệ thống con trong Android được triển khai bên dưới máy ảo - bản địa. Lớp bitmap ví dụ đơn giản nhất. Bạn sẽ không nhìn thấy toàn bộ bộ nhớ được cấp phát cho một Bitmap trong DDMS và bộ thu gom rác không phải là rất tốt/nhanh khi khôi phục bộ nhớ này. hãy cẩn thận.

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