Memory leak - Bộ nhớ trong javascript

Nội dung bài viết

Video học lập trình mỗi ngày

Khi các chức năng của các ngôn ngữ lập trình hiện nay trở nên hoàn thiện và phức tạp hơn, việc quản lý bộ nhớ rất dễ bị bỏ qua. Bài viết này sẽ thảo luận về rò rỉ bộ nhớ trong JavaScript và cách xử lý chúng, để bạn có thể xử lý tốt hơn các vấn đề do rò rỉ bộ nhớ khi viết mã trong JavaScript. Vui lòng xem những giải pháp khắc phục rò rỉ bộ nhớ trong javascript sau khi đọc bài viết này.


Vòng đời bộ nhớ trong javascript


Nhìn vào hình ảnh (Hình ảnh bản quyền thuộc về lambdatest), bạn cũng đoán được đúng không? Bất kể bạn đang sử dụng ngôn ngữ lập trình nào, vòng đời bộ nhớ gần như giống nhau: 

Sau đây là tổng quan về những gì xảy ra ở mỗi bước trong vòng đời bộ nhớ: 


Phân bổ bộ nhớ: memory được cấp phát bởi hệ điều hành, cho phép các chương trình sử dụng nó. Trong một ngôn ngữ lập trình đơn giản, quá trình này là một hoạt động rõ ràng mà nhà phát triển phải xử lý. Tuy nhiên, với các ngôn ngữ lập trình bậc cao, hệ thống sẽ giúp bạn hoàn thành thao tác này. 


Sử dụng bộ nhớ: đây là khoảng thời gian bộ nhớ được sử dụng trước khi chương trình được sử dụng. Mã của bạn sẽ sử dụng các biến được cấp phát. Để đọc và ghi bộ nhớ. 


Giải phóng bộ nhớ: Hoạt động giải phóng bộ nhớ không còn cần thiết để đảm bảo rằng nó trở nên trống và có thể được sử dụng lại. Giống như thao tác cấp phát bộ nhớ, thao tác này yêu cầu thao tác hiển thị bằng ngôn ngữ lập trình đơn giản.


Phân bổ bộ nhớ trong JavaScript


Để hiểu hơn về việc cấp phát bộ nhớ trong javascript thì hãy xem một ví dụ dưới đây. Bây giờ hãy giải thích cách cấp phát bộ nhớ trong JavaScript. JavaScript giải phóng các nhà phát triển khỏi công việc xử lý phân bổ bộ nhớ như Sau


var n = 374 ; // cấp phát bộ nhớ cho một số 
var s = 'sessiontack' ; // cấp phát bộ nhớ cho một chuỗi

var o = {
  a: 1 ,
  b: null 
}; // cấp phát bộ nhớ cho một đối tượng và các giá trị chứa của nó

var a = [ 1 ,null ,'str'];   // (như đối tượng) cấp phát bộ nhớ cho
                            // mảng và các giá trị chứa của nó

funtion f (a) {
  return a + 3 ;
} // cấp phát một hàm (là một đối tượng callback)

// biểu thức hàm cũng cấp phát một đối tượng 
someElement.addEventListener( 'click' , function () {
  someElement.style.backgroundColor = 'blue' ;
}, false );

Một số lệnh gọi function cũng có thể gây ra phân bổ đối tượng:

var d = new Date (); // cấp phát đối tượng Date 
var e = document.createElement ( ' div ' ); // cấp phát phần tử DOM


Sử dụng bộ nhớ trong JavaScript


Về cơ bản sử dụng bộ nhớ được cấp phát trong JavaScript có nghĩa là đọc và ghi trong đó. Đ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 thuộc tính đối tượng, hoặc thậm chí truyền các tham số cho một hàm. Câu hỏi ở đây rằng: Giải phóng bộ nhớ khi không còn cần thiết? 

Tham khảo thêm: giải pháp khắc phục rò rỉ bộ nhớ trong javascript

Bài viết này được dịch từ:  sessionstack 

Có thể bạn đã bị missing