Tôi thấy một vấn đề khá kỳ quặc. Về cơ bản, đôi khi phân bổ bộ nhớ bitmap lớn sẽ thất bại mặc dù có rất nhiều bộ nhớ. Có một số bài đăng xuất hiện để hỏi một câu hỏi tương tự nhưng tất cả đều liên quan đến Android trước tổ ong. Sự hiểu biết của tôi là hình ảnh được phân bổ trên heap bây giờ, thay vì một số bộ nhớ bên ngoài. Dù sao, vui lòng xem nhật ký bên dưới:Lỗi OutOfMemory mặc dù bộ nhớ trống có sẵn
10-14 13:43:53.020: INFO/dalvikvm-heap(31533): Grow heap (frag case) to 40.637MB for 942134-byte allocation
10-14 13:43:53.070: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 126K, 11% free 41399K/46343K, paused 31ms
10-14 13:43:53.130: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 920K, 13% free 40478K/46343K, paused 30ms
10-14 13:43:53.180: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 1026K, 13% free 40479K/46343K, paused 30ms
10-14 13:43:53.250: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 931K, 12% free 41193K/46343K, paused 31ms
10-14 13:43:53.250: INFO/dalvikvm-heap(31533): Grow heap (frag case) to 41.313MB for 1048592-byte allocation
10-14 13:43:53.280: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed <1K, 11% free 42217K/47431K, paused 31ms
10-14 13:44:01.520: DEBUG/dalvikvm(31533): GC_CONCURRENT freed 3493K, 15% free 40646K/47431K, paused 3ms+9ms
10-14 13:44:08.130: DEBUG/dalvikvm(31533): GC_EXPLICIT freed 16461K, 47% free 25527K/47431K, paused 3ms+6ms
10-14 13:44:09.150: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 1007K, 45% free 26191K/47431K, paused 35ms
10-14 13:44:09.160: INFO/dalvikvm-heap(31533): Grow heap (frag case) to 29.334MB for 3850256-byte allocation
10-14 13:44:09.200: DEBUG/dalvikvm(31533): GC_CONCURRENT freed 0K, 37% free 29951K/47431K, paused 2ms+4ms
10-14 13:44:11.970: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 1878K, 38% free 29784K/47431K, paused 37ms
10-14 13:44:12.410: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 62K, 36% free 30441K/47431K, paused 32ms
10-14 13:44:12.440: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed <1K, 32% free 32325K/47431K, paused 32ms
10-14 13:44:12.440: INFO/dalvikvm-heap(31533): Forcing collection of SoftReferences for 3850256-byte allocation
10-14 13:44:12.480: DEBUG/dalvikvm(31533): GC_BEFORE_OOM freed 124K, 33% free 32200K/47431K, paused 37ms
10-14 13:44:12.480: ERROR/dalvikvm-heap(31533): Out of memory on a 3850256-byte allocation.
Tôi xin lỗi vì đã đăng nhập quá nhiều, tôi hy vọng nó có liên quan. Cách tôi đọc nó là hệ thống liên tục điều chỉnh kích thước heap cho đến khi nó đạt đến mức tối đa heap. Sau đó, chúng tôi yêu cầu phân bổ đặc biệt lớn không thành công. Rõ ràng là có quá đủ bộ nhớ có sẵn (khoảng 15 megs). Điều này có nghĩa là đống nội bộ bị phân mảnh và không có phân đoạn bộ nhớ tiếp giáp đủ lớn để xử lý phân bổ của chúng tôi? Nếu đó là trường hợp tôi nên làm gì? Nếu không phải vậy, thì sao?
Xin cảm ơn trước.
Bạn có đang sử dụng các phần mềm không? – Raunak
Không trực tiếp, mặc dù dòng cuối cùng thứ 3 nói về SoftReferences. Tôi đang sử dụng bộ nhớ cache dựa trên bộ sưu tập google sử dụng WeakReferences theo như tôi biết. – EightyEight
Tôi thấy cùng một vấn đề trên S3 trên OS 4.1.2, với bộ nhớ còn trống hơn: 10-02 14: 28: 22.458 5333 9044 D dalvikvm: GC_BEFORE_OOM giải phóng 0K, 54% miễn phí 30274K/65543K, 120ms bị tạm dừng, tổng số 120ms –