ram là bộ nhớ vật lý thực tế
- ngăn xếp(stack) chỉ là 1 thuật ngữ khái niệm 1 phạm vi nhất định của ram phát triển xuống
- cả stack và heap đều là thành phần của ram và nó là bộ nhớ ảo
-các biến được lưu trữ trên ngăn xếp được lưu trữ trực tiếp trên bộ nhớ nên truy cập vào bộ nhớ rất nhanh và việc phân bổ bộ nhớ được thực hiện lúc biên dịch chương trình. khi 1 hàm gọi 1 phương thức gọi 1 hàm khác việc thực thi các hàm đó sẽ bị treo cho đến khi hàm cuối cùng trả về giá trị của nó(cứ tưởng tượng như đệ quy ấy vì đệ quy nó cũng dựa trên cách xây dựng của ngăn xếp mà)
-vì stack được phân bổ vùng nhớ có thứ tự nên việc quản lý và giải phóng nó rất đơn giản nên hđh kiêm luôn nhiệm vụ này
-còn các khối nhớ của heap không phụ thuộc với nhau nên được truy cập ngẫu nhiên bất kỳ lúc nào. bạn có thể phân bổ vùng nhớ và giải phóng nó bất cứ lúc nào
-stack là 1 chồng sách được xếp chồng lên nhau còn heap là các quyển sách được vứt lung tung cả nhà bạn muốn lấy cuốn nào chỉ đơn giản là lấy thôi