Phân mảnh bộ nhớ xảy ra khi hệ thống chứa bộ nhớ trống về mặt kỹ thuật nhưng máy tính không thể sử dụng. Bộ cấp phát bộ nhớ, gán bộ nhớ cần thiết cho các tác vụ khác nhau, phân chia và cấp phát các khối bộ nhớ khi chúng được các chương trình yêu cầu; khi dữ liệu bị xóa, nhiều khối bộ nhớ hơn được giải phóng trong hệ thống và được thêm trở lại nhóm bộ nhớ khả dụng. Khi hành động của trình cấp phát hoặc việc khôi phục các phân đoạn bộ nhớ bị chiếm dụng trước đó dẫn đến các khối hoặc thậm chí byte bộ nhớ quá nhỏ hoặc quá cô lập để nhóm bộ nhớ sử dụng, thì hiện tượng phân mảnh đã xảy ra. Phân mảnh có thể chiếm một phần đáng kể bộ nhớ trống của máy tính và nó thường là nguyên nhân gây ra các thông báo lỗi hết bộ nhớ khó chịu.
Phân mảnh nội bộ
Phân mảnh nội bộ xảy ra khi bộ cấp phát bộ nhớ để trống thêm không gian bên trong một khối bộ nhớ đã được cấp phát cho một máy khách. Điều này thường xảy ra do thiết kế của bộ xử lý quy định rằng bộ nhớ phải được cắt thành các khối có kích thước nhất định - ví dụ: các khối có thể được yêu cầu chia đều cho bốn, tám hoặc 16 byte. Khi điều này xảy ra, một ứng dụng khách cần 57 byte bộ nhớ, chẳng hạn, có thể được cấp phát một khối chứa 60 byte hoặc thậm chí 64. Các byte thừa mà ứng dụng không cần sẽ bị lãng phí và theo thời gian, những phần nhỏ này bộ nhớ không sử dụng có thể tích tụ và tạo ra một lượng lớn bộ nhớ mà bộ cấp phát không thể sử dụng. Bởi vì tất cả các byte vô dụng này đều nằm bên trong các khối bộ nhớ lớn hơn, sự phân mảnh được coi là nội bộ.
Phân mảnh bên ngoài
Phân mảnh bên ngoài xảy ra khi bộ cấp phát bộ nhớ để lại các phần của khối bộ nhớ không sử dụng giữa các phần của bộ nhớ được cấp phát. Ví dụ, nếu một số khối bộ nhớ được cấp phát trong một dòng liên tục nhưng một trong các khối ở giữa trong dòng được giải phóng (có thể do quá trình sử dụng khối bộ nhớ đó ngừng chạy), khối miễn phí sẽ bị phân mảnh. Khối vẫn có sẵn để bộ cấp phát sử dụng sau này nếu có nhu cầu về bộ nhớ phù hợp với khối đó, nhưng khối hiện không thể sử dụng được cho các nhu cầu bộ nhớ lớn hơn. Nó không thể được gộp lại với tổng bộ nhớ trống có sẵn cho hệ thống, vì tổng bộ nhớ phải liền kề để có thể sử dụng được cho các tác vụ lớn hơn. Theo cách này, toàn bộ phần bộ nhớ trống có thể bị cô lập khỏi phần toàn bộ thường quá nhỏ để sử dụng đáng kể, điều này tạo ra sự giảm tổng thể bộ nhớ trống mà theo thời gian có thể dẫn đến thiếu bộ nhớ khả dụng cho các tác vụ chính.
Phân mảnh có thể gây ra các vấn đề lớn cho hệ thống
Phân mảnh có thể trở thành một vấn đề vì nó tích tụ theo thời gian, tạo ra các khối bộ nhớ nhỏ và vô dụng cũng như hạn chế dung lượng bộ nhớ trống khả dụng của máy tính. Khi nó tiến triển, sự phân mảnh có thể khiến hiệu suất hệ thống trở nên chậm chạp và ì ạch trong thời gian ngắn; về lâu dài, sự phân mảnh có thể rút ngắn tuổi thọ của một máy tính hoặc máy chủ trung bình 30%. Trong hai loại phân mảnh, nội bộ dễ dự đoán hơn bên ngoài vì lượng không gian lãng phí được xác định bởi các tham số của trình cấp phát bộ nhớ (khối lượng được cấp phát phải lớn như thế nào), là một hằng số. Ngoài ra, lượng bộ nhớ tổng thể bị mất do phân mảnh bên trong thường ít hơn lượng bộ nhớ bị mất do phân mảnh bên ngoài, mặc dù nó có thể tích lũy dần dần. Mặt khác, phân mảnh bên ngoài khó dự đoán hơn vì trong hầu hết các trường hợp, một số quá trình thường xuyên bắt đầu và dừng lại trong hệ thống và các khối bộ nhớ được sử dụng cho các khoảng thời gian khác nhau được giải phóng theo một thứ tự khác với thứ tự chúng được lấp đầy, để lại khoảng trống trong bộ nhớ khả dụng.
Chống phân mảnh để cải thiện hiệu suất
Khi nói đến việc tối ưu hóa RAM, giải pháp hữu ích duy nhất là khởi động lại hệ thống, thao tác này sẽ xóa phần lớn bộ nhớ được sử dụng bởi các chương trình chạy dài và cung cấp cho máy tính một khởi đầu mới để cấp phát bộ nhớ. Các công cụ tuyên bố chống phân mảnh RAM là sai lầm, vì trình quản lý bộ nhớ ảo trong máy tính hiện đại hoạt động để tối ưu hóa việc sử dụng RAM liên tục. Tuy nhiên, đối với ổ cứng của bạn, có thể cần phải thực hiện một số thao tác chống phân mảnh để tối đa hóa hiệu suất hệ thống. Nếu bạn chạy Windows Vista hoặc các phiên bản mới hơn, hệ thống sẽ tự động phân mảnh dung lượng ổ cứng theo định kỳ cho bạn. Nếu bạn nhận thấy hiệu suất hệ thống chậm hơn và muốn tự chạy trình chống phân mảnh, bạn có thể bắt đầu quá trình theo cách thủ công bằng cách nhấp vào "Bắt đầu", sau đó nhấp vào "Tất cả chương trình | Phụ kiện | Công cụ hệ thống | Trình chống phân mảnh đĩa". Cuối cùng, nhấp vào "Defragment Now." Quá trình này có thể mất từ vài phút đến hàng giờ tùy thuộc vào mức độ phân mảnh của đĩa cứng, nhưng tin tốt là bạn có thể sử dụng máy tính của mình trong khi Disk Defragmenter đang chạy.
Vấn đề phân mảnh không áp dụng cho tất cả các hệ điều hành như nhau. Đối với máy tính Mac, việc chống phân mảnh là không cần thiết vì Mac OS X tự động tối ưu hóa dung lượng ổ đĩa khi tệp được ghi. Các máy Linux cũng không yêu cầu chống phân mảnh thường xuyên vì chúng gán bộ nhớ ở định dạng phân tán thay vì liền kề, cho phép mở rộng dung lượng tệp. Người dùng Linux thấy hiệu suất hệ thống giảm nên xem xét việc tăng kích thước đĩa cứng của họ. Cuối cùng, bạn không bao giờ được chống phân mảnh ổ lưu trữ trạng thái rắn (chẳng hạn như ổ USB), vì chống phân mảnh thực sự có thể rút ngắn tuổi thọ sử dụng của ổ đĩa trạng thái rắn.