Cho dù máy tính của bạn có nhanh, bóng bẩy hay cập nhật đến đâu, các sự cố như rò rỉ bộ nhớ vẫn có thể ảnh hưởng đến bạn.
Nhưng chính xác thì rò rỉ bộ nhớ là gì và nó diễn ra như thế nào?
Rò rỉ bộ nhớ là gì?
Bộ nhớ máy tính, còn được gọi là bộ nhớ truy cập ngẫu nhiên (RAM), lưu trữ tạm thời thông tin liên quan đến hệ điều hành, chương trình và dịch vụ đang chạy trên máy tính của bạn. RAM được sử dụng vì nó nhanh - nhanh hơn cả SSD - và rất hữu ích để lưu trữ dữ liệu được truy cập thường xuyên.
Các ứng dụng sử dụng bộ nhớ theo yêu cầu, lưu trữ thông tin liên quan đến hoạt động, hành động tiếp theo của bạn, dữ liệu được yêu cầu thường xuyên, v.v... Khi một ứng dụng ngừng sử dụng bộ nhớ được cấp phát, điều đó báo hiệu rằng bộ nhớ hiện đã trống. Tuy nhiên, nếu chương trình tiếp tục chạy mà không trả lại bộ nhớ đã được cấp phát, nó sẽ dần dần tiêu tốn ngày càng nhiều bộ nhớ khả dụng mà vẫn không trả lại bất kỳ bộ nhớ nào, cuối cùng khiến hệ thống gặp sự cố.
Cách phát hiện rò rỉ bộ nhớ
Khi hệ thống bị thiếu bộ nhớ, rất có thể bạn sẽ nhận được thông báo cảnh báo trên màn hình cho biết "Máy tính của bạn sắp hết bộ nhớ". Đó là thông báo tương tự trên tất cả các hệ điều hành chính và khi nhìn thấy nó, bạn có thể nhận thấy hiệu suất của mình giảm sút và hệ thống bắt đầu gặp trục trặc.
Cách dễ nhất để kiểm tra rò rỉ bộ nhớ là xem mức sử dụng RAM của hệ thống. Nếu bạn thấy một ứng dụng hoặc tiến trình ngày càng tiêu tốn nhiều bộ nhớ hơn thì đó là dấu hiệu chắc chắn rằng có sự cố, có thể là rò rỉ bộ nhớ, xảy ra. Ví dụ, trong hình ảnh bên dưới, Google Chrome đang sử dụng một lượng lớn bộ nhớ nhưng tác giả có tới 5 cửa sổ Chrome với khoảng 20 tab đang mở và cài đặt RAM 32GB. Vì vậy, mặc dù con số này cao nhưng thực tế nó không phải là vấn đề. Bây giờ, hãy xem danh sách tiến trình và thấy Spotify sử dụng lượng RAM tương tự, điều đó cho thấy có vấn đề và sự cố rò rỉ bộ nhớ tiềm ẩn.
Cách kiểm tra mức sử dụng RAM trên Windows
- Nhấp chuột phải vào thanh tác vụ và chọn Task Manager.
- Trên tab Processes, sắp xếp cột Memory sao cho giá trị lớn nhất nằm ở trên cùng.
- Đánh giá xem các ứng dụng ở trên cùng có đang sử dụng đúng dung lượng bộ nhớ hay không.
Để đóng một tiến trình, nhấp chuột phải vào nó và chọn End task.
Cách kiểm tra mức sử dụng RAM trên macOS
- Đi tới Applications > Utilities, sau đó mở Activity Monitor.
- Chọn tab Memory ở đầu cửa sổ Activity Monitor.
- Sắp xếp cột Memory sao cho giá trị lớn nhất nằm ở trên cùng.
- Bây giờ, hãy chọn ứng dụng hoặc tiến trình bạn muốn kết thúc, sau đó chọn nút Stop.
macOS sau đó cung cấp cho bạn hai tùy chọn: Quit hoặc Force Quit. Force Quit sẽ ngay lập tức cố gắng chấm dứt tiến trình và xóa mọi dữ liệu chưa được lưu.
Cách kiểm tra mức sử dụng RAM trên Linux bằng System Monitor
Vì có các phiên bản khác nhau của System Monitor cho từng môi trường desktop Linux nên những bước bạn thực hiện có thể khác nhau. Nói chung, bạn sẽ nhập system monitor vào menu Start hoặc công cụ tìm kiếm hệ thống và chọn kết quả phù hợp nhất.
Khi System Monitor mở ra, hãy sắp xếp tab hoặc cột Memory sao cho các giá trị lớn nhất ở trên cùng và xác định xem có ứng dụng hoặc tiến trình nào đang sử dụng quá nhiều bộ nhớ hay không. Ngoài ra còn có các lệnh Linux để kiểm tra tình trạng hệ thống, có thể hiển thị mức sử dụng RAM.
Hậu quả của việc rò rỉ bộ nhớ
Hậu quả và sự cố rò rỉ bộ nhớ phụ thuộc vào việc sử dụng ứng dụng client hoặc server.
Ứng dụng client (desktop và điện thoại di động)
Đối với những điều này, hậu quả của việc rò rỉ bộ nhớ không nghiêm trọng lắm vì bộ nhớ được cấp phát sẽ giải phóng khi ứng dụng bị chấm dứt. Vì vậy, không có sự mất ổn định hệ thống. Một số vấn đề gặp phải khi sử dụng bộ nhớ quá mức có thể là:
- Hệ thống của bạn có thể bắt đầu chậm lại.
- Ứng dụng trên máy tính của bạn có thể đóng đột ngột.
- Code ứng dụng cấp phát bộ nhớ của máy tính có thể bị lỗi và gây ra lỗi.
Tuy nhiên, trong những trường hợp nghiêm trọng hơn, rò rỉ bộ nhớ có thể tạo cơ hội cho các cuộc tấn công Code injection, dẫn đến mất dữ liệu và nhiều vấn đề bảo mật khác.
Ứng dụng server
Vấn đề rò rỉ bộ nhớ trở nên trầm trọng hơn trong trường hợp này, vì máy chủ thường chạy trong một thời gian dài mà không khởi động lại. Các vấn đề ở đây cũng giống như các vấn đề trong trường hợp ứng dụng máy tính để bàn. Bộ nhớ bị tiêu tốn trong nhiều ngày, tuần và tháng và hiệu suất của máy chủ giảm sút. Lỗi bắt đầu xuất hiện, khiến máy chủ ngừng hoạt động.
Tương tự như các ứng dụng khách, rò rỉ bộ nhớ lâu dài có thể tạo cơ hội cho kẻ tấn công khai thác cuộc tấn công tiêm mã, xâm phạm dữ liệu.
Cách ngăn chặn rò rỉ bộ nhớ
Khi nói đến mã hóa, hầu hết các ngôn ngữ lập trình đều có những tính năng hỗ trợ nhà phát triển quản lý bộ nhớ tự động, chẳng hạn như trình thu gom dữ liệu rác, giúp giải phóng bộ nhớ không được sử dụng. Có nhiều loại trình thu gom dữ liệu rác khác nhau và hiểu cách hoạt động của trình thu gom dữ liệu rác trong ứng dụng của bạn là một bước quan trọng trong việc ngăn chặn rò rỉ bộ nhớ.
Một phương pháp khác để ngăn chặn rò rỉ bộ nhớ là viết code loại bỏ các tài nguyên không cần thiết. Bạn phải viết code cụ thể cho ứng dụng biết rằng công việc của tài nguyên đã kết thúc và không còn sử dụng bộ nhớ nữa. Đảm bảo rằng các vòng lặp được thực thi hoàn toàn để tránh xảy ra rò rỉ bộ nhớ.
Tuy nhiên, nếu bạn không mã hóa và chỉ gặp sự cố rò rỉ bộ nhớ trên PC ở nhà, việc khởi động lại hệ thống của bạn sẽ khắc phục được sự cố rò rỉ bộ nhớ và có khả năng ngăn nó tái diễn nếu đó là lỗi tạm thời. Bạn cũng nên cập nhật hệ điều hành đang sử dụng, dù là Windows, macOS hay Linux. Rò rỉ bộ nhớ do code bị lỗi hoặc một vấn đề khác có thể sẽ được khắc phục thông qua một bản cập nhật, cho dù là hệ điều hành hay chương trình được đề cập. Điều quan trọng là luôn cập nhật máy của bạn!
Cách khắc phục rò rỉ bộ nhớ bằng các công cụ tích hợp của Windows
Trước đó, bài viết đã trình bày chi tiết cách phát hiện và khắc phục sự cố rò rỉ bộ nhớ cho Windows, macOS và Linux. Tuy nhiên, có một số phương pháp bổ sung mà bạn có thể thử khắc phục rò rỉ bộ nhớ trên Windows.
Windows Resource Monitor
Windows Resource Monitor cũng có thể giúp bạn hiểu vấn đề rò rỉ bộ nhớ bằng cách cung cấp dữ liệu thời gian thực cho tài nguyên hệ thống của bạn.
- Nhập Resource Monitor vào thanh tìm kiếm trong menu Start và chọn Kết quả phù hợp nhất.
- Chọn tab Memory.
- Sắp xếp tab Commit để hiển thị các giá trị lớn nhất.
Như trước đây, bạn sẽ phải tìm hiểu xem có ứng dụng nào của bạn đang sử dụng quá nhiều bộ nhớ hay không.
Vô hiệu hóa các chương trình chạy khi khởi động
Đôi khi, một chương trình chạy khi khởi động có thể gây rò rỉ bộ nhớ. Để giải quyết vấn đề này, hãy tắt ứng dụng để đảm bảo nó không gây ra thêm sự cố nào khi bạn khởi chạy hệ thống của mình.
- Nhấn Ctrl + Shift + Esc để mở Task Manager, sau đó mở tab Startup.
- Tìm chương trình bạn muốn dừng khởi chạy khi khởi động.
- Nhấp chuột phải và chọn Disable.
Lưu ý rằng mặc dù điều này sẽ ngăn chặn mọi sự cố rò rỉ bộ nhớ liên quan đến khởi động nhưng sự cố rò rỉ bộ nhớ có thể vẫn tồn tại nếu bạn mở chương trình sau này. Nếu đúng như vậy, bài viết khuyên bạn nên gỡ cài đặt chương trình.