2012-12-30 20 views
19

Ứng dụng của tôi đang gây ra những GC_FOR_ALLOC sợ hãi xảy ra cách để nhiều lần tại các địa điểm cụ thể (phương pháp):Làm cách nào để giảm thiểu số lần xuất hiện GC_FOR_ALLOC?

12-29 22:20:30.229: D/dalvikvm(10592): GC_FOR_ALLOC freed 1105K, 14% free 10933K/12615K, paused 33ms, total 34ms 
12-29 22:20:30.260: D/dalvikvm(10592): GC_FOR_ALLOC freed 337K, 13% free 11055K/12615K, paused 25ms, total 26ms 
12-29 22:20:30.288: D/dalvikvm(10592): GC_FOR_ALLOC freed 278K, 14% free 10951K/12615K, paused 24ms, total 24ms 
12-29 22:20:30.495: D/dalvikvm(10592): GC_CONCURRENT freed 633K, 11% free 11317K/12615K, paused 16ms+3ms, total 79ms 
12-29 22:20:30.495: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 16ms 
12-29 22:20:30.499: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 15ms 

Rõ ràng với tôi rằng tôi đang làm một cái gì đó sai liên quan đến quản lý bộ nhớ (có, thu gom rác thải là rất tốt nhưng vẫn không giải thoát tôi khỏi một số trách nhiệm để biết khi nào & cách phân bổ).

Bạn có thể đề xuất phương pháp hoặc kỹ thuật xử lý sự cố xử lý sự cố có thể dẫn tôi đến các dòng mã vi phạm và các giải pháp khả thi không?

+6

Bạn có thể muốn đọc [bài blog này] (http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/), được viết bởi Romain Guy (vâng, kỹ sư của Google, người đã nói chuyện với I/O vài lần mỗi năm). – Eric

+0

@Eric Đó chính xác là loại con trỏ tôi cần. Cảm ơn! (BTW, Romain Guy có làm việc với [Patrick] (http://www.youtube.com/watch?v=_CruQY55HOk)?) – srf

+1

Tôi không nghĩ vậy. Patrick thuộc nhóm Chrome và Romain thuộc nhóm Android .. làm thế nào Patrick kết thúc trong một cuộc trò chuyện trên Android? Tôi không biết! : P – Eric

Trả lời

55

Android DDMS, là một phần của công cụ phát triển Android trong nhật thực, có các công cụ rất hữu ích mà bạn có thể sử dụng để theo dõi phân bổ và phân bổ bộ nhớ. Ảnh chụp màn hình dưới đây nêu bật một số công cụ này (tất cả dưới DDMS), một số công cụ cần được kích hoạt bằng cách nhấp vào nút tương ứng trong bảng điều khiển bên trái (được đánh dấu màu đỏ) và sau đó bạn có thể thấy các giá trị (một số có đồ thị) trong bảng điều khiển bên phải bằng cách chọn tab bạn muốn xem (được đánh dấu bằng màu xanh lam)

Bộ nhớ theo dõi và phân bổ sẽ rất hữu ích trong trường hợp của bạn.

eclipse screenshot showing profiling and memory allocation tools

+0

Điều này rất hữu ích. Cảm ơn! Sẽ đánh dấu là được chấp nhận nếu một câu trả lời thật sự làm tôi choáng váng không xuất hiện sớm. – srf

+47

@srf Thời gian để cung cấp lời hứa của mình ...;) – ubuntudroid

+10

@srf chút nhắc nhở – gian1200