ช่องอินสแตนซ์องค์ประกอบอาร์เรย์
หากมีการอ้างอิงถึงวัตถุจะไม่สามารถเก็บขยะได้ โดยเฉพาะอย่างยิ่งถ้าวัตถุนั้น (และกราฟทั้งหมดที่อยู่ข้างหลัง) มีขนาดใหญ่มีเพียงข้อมูลอ้างอิงเดียวที่หยุดการเก็บขยะและการอ้างอิงนั้นไม่จำเป็นอีกต่อไปนั่นเป็นสถานการณ์ที่โชคร้าย
กรณีทางพยาธิวิทยาเป็นอ็อบเจ็กต์ที่เก็บอินสแตนซ์ unnessary ไว้กับแผนผัง XML DOM ทั้งหมดที่ใช้ในการกำหนดค่า MBean ที่ไม่ได้ยกเลิกการลงทะเบียนหรือการอ้างอิงเดียวไปยังอ็อบเจ็กต์จากเว็บแอ็พพลิเคชันที่ไม่ได้ปรับใช้ซึ่งป้องกันไม่ให้โหลดคลาสทั้งหมดไม่โหลด .
ดังนั้นหากคุณไม่แน่ใจว่าวัตถุที่เก็บข้อมูลอ้างอิงนั้นจะเป็นขยะที่ถูกเก็บรวบรวม (หรือถึงตอนนั้น) คุณควรลบล้างทุกสิ่งที่คุณไม่ต้องการอีกต่อไป
ตัวแปรที่กำหนดขอบเขต:
หากคุณกำลังพิจารณาตั้งค่าตัวแปรโลคัลเป็น null ก่อนสิ้นสุดขอบเขตเพื่อให้ตัวเก็บรวบรวมขยะสามารถเรียกคืนได้และทำเครื่องหมายว่า "ใช้ไม่ได้นับจากนี้เป็นต้นไป" คุณควรพิจารณากำหนดให้อยู่ในขอบเขตที่ จำกัด มากขึ้นแทน .
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; // <-- explicitly set to null
doSomethingElse();
}
กลายเป็น
{
{
BigObject obj = ...
doSomethingWith(obj);
} // <-- obj goes out of scope
doSomethingElse();
}
โดยทั่วไปขอบเขตที่ยาวและแบนมักไม่ดีต่อความชัดเจนของรหัสด้วย การแนะนำวิธีการส่วนตัวเพื่อทำลายสิ่งต่าง ๆ เพื่อจุดประสงค์นั้นก็ไม่ได้เป็นสิ่งที่ไม่เคยได้ยินมาก่อนเช่นกัน