Saya menggunakan variabel dengan banyak data di dalamnya, katakanlah String data
. Saya ingin menggunakan sebagian kecil dari string ini dengan cara berikut:
this.smallpart = data.substring(12,18);
Setelah beberapa jam melakukan debug (dengan visualizer memori) saya menemukan bahwa bidang objek smallpart
mengingat semua data dari data
, meskipun hanya berisi substring.
Ketika saya mengubah kode menjadi:
this.smallpart = data.substring(12,18)+"";
..masalah terselesaikan! Sekarang aplikasi saya menggunakan sangat sedikit memori sekarang!
Bagaimana mungkin? Adakah yang bisa menjelaskan ini? Saya pikir ini. Sebagian kecil terus merujuk pada data, tapi mengapa?
PEMBARUAN: Bagaimana saya bisa menghapus String besar itu? Apakah data = String baru (data.substring (0,100)) melakukan hal itu?
new String(String)
; lihat stackoverflow.com/a/390854/8946 .