String data
ผมใช้ตัวแปรที่มีข้อมูลเป็นจำนวนมากในการพูด ฉันต้องการใช้ส่วนเล็ก ๆ ของสายนี้ในวิธีต่อไปนี้:
this.smallpart = data.substring(12,18);
หลังจากทำการดีบักได้หลายชั่วโมง (ด้วย visualizer หน่วยความจำ) ฉันพบว่าฟิลด์ออบเจ็กต์smallpart
จดจำข้อมูลทั้งหมดจากdata
แม้ว่ามันจะมีซับสตริงเท่านั้น
เมื่อฉันเปลี่ยนรหัสเป็น:
this.smallpart = data.substring(12,18)+"";
.. ปัญหาได้รับการแก้ไข! ตอนนี้แอปพลิเคชันของฉันใช้หน่วยความจำน้อยมากในตอนนี้!
เป็นไปได้อย่างไร? มีใครอธิบายเรื่องนี้ได้บ้าง ฉันคิดว่านี่ขนาดเล็กเก็บอ้างอิงถึงข้อมูล แต่ทำไม?
อัปเดต: ฉันจะล้างสตริงขนาดใหญ่ได้อย่างไร data = new String (data.substring (0,100)) จะทำสิ่งนั้นหรือไม่