Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

อธิบายโดยละเอียดเกี่ยวกับวงจรชีวิตหน่วยความจำของ JavaScript หรือไม่


รอบหน่วยความจำ

โดยไม่คำนึงถึงภาษาการเขียนโปรแกรม วงจรหน่วยความจำเกือบจะเหมือนกันสำหรับภาษาการเขียนโปรแกรมใดๆ

วงจรชีวิตของหน่วยความจำมี 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 ใช้อัลกอริธึมบางอย่างเช่นการรวบรวมขยะที่นับการอ้างอิงเพื่อค้นหาหน่วยความจำที่ไม่ได้ใช้งานอีกต่อไป