Phân mảnh cũng xảy ra trong bộ nhớ hệ thống (RAM). Các quy trình ứng dụng và hệ thống phân bổ và sử dụng bộ nhớ trong các khối không liền nhau, vì các thanh ghi bộ nhớ hiện có được sử dụng và tái sử dụng.
Ram có thể bị phân mảnh không?
Phân trang bộ nhớtạo ra sự phân mảnh bên trong vì toàn bộ khung trang sẽ được phân bổ cho dù có cần nhiều dung lượng lưu trữ đó hay không. Do các quy tắc quản lý cấp phát bộ nhớ, đôi khi bộ nhớ máy tính được cấp phát nhiều hơn mức cần thiết.
Nguyên nhân nào gây ra phân mảnh bộ nhớ?
Phân mảnh bộ nhớ là khiphần lớn bộ nhớ của bạn được phân bổ thành một số lượng lớn các khối không liền kề, hoặc các khối- để lại một tỷ lệ phần trăm tốt trong tổng bộ nhớ của bạn không được phân bổ, nhưng không sử dụng được cho hầu hết các tình huống điển hình. Điều này dẫn đến ngoại lệ ngoài bộ nhớ hoặc lỗi cấp phát (tức là malloc trả về null).
Phân mảnh bộ nhớ có tệ không?
Nói chung lập trình c ++không có vấn đề gì với phân mảnh bộ nhớ. Bạn luôn nhìn thấy bộ nhớ ảo và bạn luôn phân bổ các phần bộ nhớ ảo liền kề. Điều duy nhất bạn có thể nhận thấy rằng các phần được cấp phát tuần tự không nhất thiết phải liền kề trong bộ nhớ.
Bạn làm cách nào để ngăn chặn sự phân mảnh bộ nhớ?
Nếu bạn có thể cô lập chính xác những nơi bạn có khả năng phân bổ các khối lớn, bạn có thể (trên Windows) trực tiếpgọi VirtualAlloc thay vì đi qua trình quản lý bộ nhớ. Điều này sẽ tránhphân mảnh trong trình quản lý bộ nhớ thông thường.