รอบหน่วยความจำ
โดยไม่คำนึงถึงภาษาการเขียนโปรแกรม วงจรหน่วยความจำเกือบจะเหมือนกันสำหรับภาษาการเขียนโปรแกรมใดๆ
วงจรชีวิตของหน่วยความจำมี 3 ขั้นตอน
1) การจัดสรรหน่วยความจำ .
2) ใช้หน่วยความจำที่จัดสรร (อ่านหรือเขียน)
3) ปล่อยหน่วยความจำที่จัดสรรเมื่อไม่จำเป็น
ส่วนแรกและส่วนสุดท้ายเชื่อมต่อโดยตรงในภาษาระดับต่ำ แต่เชื่อมต่อโดยอ้อมในภาษาระดับสูง เช่น JavaScript
1) การจัดสรรหน่วยความจำในจาวาสคริปต์
JavaScript เรียกว่าภาษาที่รวบรวมขยะ นั่นคือเมื่อมีการประกาศตัวแปร ตัวแปรจะจัดสรรหน่วยความจำให้โดยอัตโนมัติ เมื่อไม่มีการอ้างอิงสำหรับตัวแปรที่ประกาศแล้ว หน่วยความจำที่จัดสรรจะถูกปล่อยออกมา
ตัวอย่าง
ในตัวอย่างต่อไปนี้ javascript ได้จัดสรรหน่วยความจำสำหรับตัวเลข สตริง และอ็อบเจ็กต์
var n = 989; // allocates memory for a number var s = 'qwerty'; // allocates memory for a string var o = { a: 1, b: null }; // allocates memory for an object and contained values
2) การใช้ค่าที่จัดสรรไว้
การใช้ค่าโดยทั่วไปหมายถึงการอ่านและการเขียนในหน่วยความจำที่จัดสรร ซึ่งสามารถทำได้โดยการอ่านหรือเขียนค่าของตัวแปรหรือคุณสมบัติของอ็อบเจกต์ หรือแม้แต่ส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน
3) ปล่อยหน่วยความจำที่จัดสรรเมื่อไม่จำเป็น
ปัญหาการจัดการหน่วยความจำส่วนใหญ่จะมาในขั้นตอนนี้ งานที่ยากลำบากในที่นี้คือการค้นหาว่าเมื่อใดที่หน่วยความจำที่จัดสรรไม่จำเป็นต้องใช้อีกต่อไป ในการแยกแยะปัญหานี้ ภาษาระดับสูงส่วนใหญ่ได้ฝังซอฟต์แวร์ที่เรียกว่าตัวรวบรวมขยะ
งานของตัวรวบรวมขยะคือการติดตามการจัดสรรหน่วยความจำและค้นหาเมื่อหน่วยความจำที่จัดสรรนั้นไม่จำเป็นอีกต่อไปเพื่อปล่อยมัน น่าเสียดายที่กระบวนการนี้เป็นเพียงการประมาณการเนื่องจากปัญหาทั่วไปของการรู้ว่าหน่วยความจำบางส่วนมีความจำเป็นหรือไม่นั้นไม่สามารถตัดสินใจได้ (อัลกอริธึมติดตามไม่ได้)
ตัวรวบรวมขยะ Javascript ใช้อัลกอริธึมบางอย่างเช่นการรวบรวมขยะที่นับการอ้างอิงเพื่อค้นหาหน่วยความจำที่ไม่ได้ใช้งานอีกต่อไป