Tôi đang viết một quy trình để đồng bộ số lượng lớn các liên hệ với cơ sở dữ liệu Danh bạ Android. Việc tải xuống hoạt động tốt cho khoảng 700 địa chỉ liên lạc sau đó tôi liên tục nhận được một lỗi bộ nhớ heap mà gọi số vô hạn của báo cáo GC và kết thúc lại khởi động lại điện thoại. Tôi đang phải đối mặt với vấn đề trên HTC mong muốn.Android dalvikvm-heap: Kẹp mục tiêu GC heap
Tôi đã kiểm tra kích thước của ứng dụng bằng cách sử dụng công cụ phân vùng Heap từ DDMS cũng như trích xuất tệp hprof bằng Debug.dumpHprofData. Cả hai bản ghi chỉ ra rằng kích thước Heap là khoảng 2,4MB.
Tuy nhiên tôi nhận được các bản ghi sau đó chỉ ra rằng kích thước heap hơn 32.MB
dalvikvm-heap(92): Clamp target GC heap from 33.999MB to 32.000MB
dalvikvm(92): GC_FOR_MALLOC freed 2 objects/48 bytes in 313ms
tôi đã chèn sau báo cáo đăng nhập trong vòng lặp mà contatcs tôi tải Logic đã được viết.
Log.e("Memory", "free mem =" +runtime.freeMemory());
Log.e("Memory", "total memory =" +runtime.totalMemory());
Đây là những giá trị ban đầu và cuối cùng của báo cáo kết quả in
---------------------------------------------------------------
11-11 12:56:04.168: ERROR/Memory(25132): free mem =871248
11-11 12:56:04.168: ERROR/Memory(25132): total memory =4202464
---------------------------------------------------------------
11-11 13:01:55.408: ERROR/Memory(25132): free mem =891640
11-11 13:01:55.408: ERROR/Memory(25132): total memory =4726752
---------------------------------------------------------------
Điều này cho thấy rằng apperently không có rò rỉ bộ nhớ hiện diện trong logic địa chỉ liên lạc đồng bộ.
Có thể ai đó vui lòng cho tôi biết vì sao kích thước heap tăng lên (tối đa 32.00Mb) đến mức thiết bị tự khởi động lại? Tôi mới sử dụng Android và Java, vì vậy hãy dễ dàng với tôi:) .....
Bạn có thể liên kết hoặc dán mã nguồn có liên quan không? –
Thấy một số mã sẽ giúp ích. Bất kể - tại sao bạn cần phải lưu trữ tất cả các số liên lạc trong bộ nhớ? Thông thường khi đồng bộ hóa các liên hệ, một người sẽ thiết lập một con trỏ và thực hiện truy vấn. Bạn có thể không cần phải giữ tất cả các số liên lạc trong bộ nhớ cùng một lúc. Tui bỏ lỡ điều gì vậy? – Guy
Là id quá trình cho các đường dalvikvm trong nhật ký quá trình của bạn? – Ifor