Tôi đã sử dụng một biến có rất nhiều dữ liệu trong đó String data
. Tôi muốn sử dụng một phần nhỏ của chuỗi này theo cách sau:
this.smallpart = data.substring(12,18);
Sau vài giờ gỡ lỗi (với trình hiển thị bộ nhớ) tôi phát hiện ra rằng trường đối tượng smallpart
ghi nhớ tất cả dữ liệu từ đó data
, mặc dù nó chỉ chứa chuỗi con.
Khi tôi thay đổi mã thành:
this.smallpart = data.substring(12,18)+"";
..các vấn đề đã được giải quyết! Bây giờ ứng dụng của tôi sử dụng rất ít bộ nhớ!
Làm thế nào là có thể? Bất cứ ai có thể giải thích điều này? Tôi nghĩ this.smallpart tiếp tục tham khảo dữ liệu, nhưng tại sao?
CẬP NHẬT: Làm thế nào tôi có thể xóa Chuỗi lớn sau đó? Dữ liệu = Chuỗi mới (data.sub chuỗi (0,100)) sẽ làm điều đó?
new String(String)
; xem stackoverflow.com/a/390854/8946 .