Chu kỳ bộ nhớ
Bất kể ngôn ngữ lập trình là gì, chu kỳ bộ nhớ gần như giống nhau đối với bất kỳ ngôn ngữ lập trình nào.
Có 3 bước trong vòng đời bộ nhớ
1) Phân bổ bộ nhớ.
2) sử dụng bộ nhớ được cấp phát (đọc hoặc ghi)
3) Giải phóng bộ nhớ đã cấp phát khi không cần thiết.
Phần đầu tiên và phần cuối cùng được kết nối trực tiếp bằng các ngôn ngữ cấp thấp nhưng được kết nối gián tiếp bằng các ngôn ngữ cấp cao như JavaScript.
1) Phân bổ bộ nhớ trong javascript
JavaScript được gọi là ngôn ngữ thu gom rác, tức là khi các biến được khai báo, nó sẽ tự động cấp phát bộ nhớ cho chúng.
Ví dụ
Trong ví dụ sau, javascript đã cấp phát bộ nhớ cho một số, một chuỗi và một đối tượng.
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) Sử dụng các giá trị được phân bổ
Sử dụng giá trị về cơ bản có nghĩa là đọc và ghi trong bộ nhớ được cấp phát. Điều này có thể được thực hiện bằng cách đọc hoặc ghi giá trị của một biến hoặc một thuộc tính đối tượng hoặc thậm chí truyền một đối số cho một hàm.
3) Giải phóng bộ nhớ đã cấp phát khi không cần thiết
Hầu hết các vấn đề về quản lý bộ nhớ sẽ đến trong giai đoạn này, nhiệm vụ tối quan trọng ở đây là tìm ra thời điểm bộ nhớ được cấp phát không còn cần thiết nữa.
Nhiệm vụ của bộ thu gom rác là theo dõi phân bổ bộ nhớ và tìm khi nào bộ nhớ đã cấp không cần thiết nữa để giải phóng nó. Thật không may, quá trình này chỉ là ước tính vì vấn đề chung là biết liệu một số phần bộ nhớ có cần thiết hay không là không thể quyết định. (thuật toán không thể theo dõi)
Trình thu gom rác Javascript sử dụng một số thuật toán như Thu thập rác đếm tham chiếu để tìm ra bộ nhớ không còn được sử dụng.