Tôi đang nhận được một OutofMemoryError cho ứng dụng Android của tôi, và có một chút bối rối như những gì đang xảy ra. Về cơ bản những gì xảy ra là, tôi có thể chạy nó vài lần đầu tiên, nhưng khi tôi cố gắng thoát ra khỏi nó và sau đó mở nó một cách nhanh chóng và lặp đi lặp lại, tôi nhận được một lỗi bộ nhớ.Cách giải phóng bộ nhớ đối tượng Hoạt động thực tế sau khi thoát khỏi hoạt động?
Tôi đã thử nghiên cứu chủ đề này và nhận thấy rằng phương thức recycle() thường là vấn đề. Tuy nhiên, tôi đã gọi phương thức tái chế trên mỗi bitmap (được lưu trữ trong một thùng chứa đối tượng, được lưu trữ trong một danh sách mảng), nhưng vẫn gặp sự cố.
Sau khi thực hiện việc này, tôi đã thử sử dụng Trình phân tích bộ nhớ Eclipse để xem xét các vùng đống, khi tôi bắt gặp một điều gì đó kỳ lạ. Sau khi thoát khỏi hoạt động (trở lại hoạt động phóng, và sau đó mở hoạt động lại thông qua một nút, tôi đã chụp ảnh màn hình của vùng lưu trữ bằng cách sử dụng bộ phân tích bộ nhớ. Hóa ra, mỗi lần tôi thoát và nhập lại hoạt động, một trường hợp khác của đối tượng hoạt động đã được tạo ra và các phiên bản cũ không được phát hành, mặc dù phương thức onDestroy() đã được gọi (cũng có mã tái chế/dọn dẹp). phương thức hoàn thiện để xem liệu nó có được gọi khi hoạt động thoát ra trở lại hoạt động của trình khởi chạy hay không, nhưng nó không được gọi. Tôi đọc trên một số luồng stackoverflow khác mà finalize() không phải lúc nào cũng được gọi, , Tôi vẫn không chắc chắn những gì đang diễn ra.
Cuối cùng, câu hỏi của tôi là: Làm cách nào để đảm bảo rằng đối tượng Hoạt động (đối tượng hoạt động, không phải thứ được tạo ra từ hoạt động) được phát hành sau khi thoát khỏi hoạt động này sang hoạt động khác?
Bạn chạy một GC trước khi làm đống đổ của bạn và vẫn thấy nhiều trường hợp của hoạt động? Nếu vậy, bạn có thể đang bị rò rỉ Hoạt động theo một cách nào đó. Nếu không có mã của bạn hoặc biết thêm thông tin về những gì bạn đang làm, rất khó đoán được điều đó đang xảy ra như thế nào. –
bạn có nhận được giải pháp – LMK
hi, u có nhận được giải pháp không ?? u sẽ chia sẻ nó bất cứ ai ?? –