Trong Javascript, có hai loại bộ nhớ chính: stack và heap. Chúng hoạt động khác nhau trong việc lưu trữ và quản lý dữ liệu.
1. Stack:
- Stack được sử dụng để lưu trữ các biến cục bộ, tham số và các giá trị trung gian khi hàm được gọi.
- Mỗi khi một hàm được gọi, một khung dữ liệu mới được tạo trên stack để lưu trữ các biến cục bộ và thông tin về hàm.
- Khi hàm kết thúc, khung dữ liệu đó sẽ được xóa khỏi stack, giải phóng không gian bộ nhớ.
2. Heap:
- Heap được sử dụng để lưu trữ các đối tượng động và dữ liệu có kích thước không xác định trước.
- Đối tượng trên heap tồn tại cho đến khi không còn bất kỳ tham chiếu nào đến chúng.
- Trong Javascript, việc quản lý heap được thực hiện tự động thông qua thu thập rác (garbage collection), nghĩa là các đối tượng không còn được sử dụng sẽ được tự động thu hồi bộ nhớ.
Ví dụ mô phỏng luồng stack và heap trong Javascript:
Trong ví dụ trên, khi hàm foo được gọi, một khung dữ liệu mới được tạo trên stack để lưu trữ biến a và tham chiếu đến đối tượng b . Sau đó, khi hàm bar được gọi, một khung dữ liệu mới khác được tạo trên stack để lưu trữ biến x và y , trong đó y là một tham chiếu đến đối tượng b trên heap. Cuối cùng, giá trị của x và y.value được tính toán trên stack và kết quả được in ra màn hình. Khi hàm bar kết thúc, khung dữ liệu của nó được xóa khỏi stack, giải phóng không gian bộ nhớ.
0 nhận xét:
Post a Comment