Firefox từ lâu đã chiếm được cảm tình của người sử dụng nhờ vào sự ổn định cùng với rất nhiều add-on phong phú nhưng bên cạnh đó thì nhược điểm ngốn bộ nhớ của trình duyệt này đã tồn tại qua nhiều phiên bản mà vẫn chưa được khắc phục, gây ra nhiều phiền phức khi bạn cần chạy các ứng dụng nặng khác. Vì lý do đó mà đã có nhiều add-on memory-cleaner (tiết kiệm bộ nhớ) được ra đời. Tuy nhiên câu hỏi đặt ra là chúng có thực sự hiệu quả hay không?
Sơ lược về bộ nhớ trong Windows
Trước khi đi vào phân tích add-on làm giảm bộ nhớ, ta hãy cùng tìm hiểu xem Windows quản lý bộ nhớ như thế nào.
Trong Windows có 2 dạng bộ nhớ: Physical Memory (bộ nhớ vật lý - RAM) và Virtual Memory (bộ nhớ ảo). Khi một ứng dụng được chạy, Windows sẽ load tất cả dữ liệu liên quan đến chương trình đó vào bộ nhớ nhưng không phải tất cả lượng RAM dùng để chứa số dữ liệu đó sẽ được hệ thống thông báo là đang được sử dụng mà chỉ những dữ liệu đang được dùng tại thời điểm đó (Active Memory) sẽ được thông báo, phần còn lại nằm trong vùng bộ nhớ ảo. Dung lượng của vùng này được tính như sau:
Bộ nhớ ảo = (Tổng dung lượng RAM – dung lượng RAM đang được sử dụng) + dung lượng vùng page file trên ổ cứng.
Page file (phân trang) là một vùng trên ổ cứng được hệ thống “mượn” để giả làm RAM. Giả sử bạn cần chạy một ứng dụng tiêu tốn 10MB RAM tuy nhiên máy của bạn chỉ còn 5MB RAM thì chuyện gì sẽ xảy ra ? Chương trình đó sẽ không khởi động được hoặc tai hại hơn là trong quá trình hoạt động các chương trình sẽ ghi đè lên vùng nhớ của chương trình khác khiến cho lỗi xảy ra, nên để tránh hiện tượng này Windows sẽ sử dụng page file để bù vào chỗ bộ nhớ còn thiếu đó. Tuy nhiên tốc độ truy xuất dữ liệu của ổ cứng không thể bằng được với RAM nên ghi nhiều dữ liệu vào vùng page file đồng nghĩa với việc máy tính sẽ hoạt động chậm hơn.
Theo dõi quá trình hoạt động của FireFox
Chúng ta sẽ sử dụng công cụ Task Manager của Windows để theo dõi lượng bộ nhớ mà Firefox sử dụng trong quá trình thử nghiệm. Trước tiên hãy bật thêm các thông số cần thiết trong Task Manager:
Working Set: Lượng bộ nhớ được cấp cho một tiến trình, bao gồm cả phần dành riêng cho tiến trình đó và một phần có thể chia sẻ với các ứng dụng khác.
Memory (Private Working Set): Dung lượng bộ nhớ mà tiến trình có thể sử dụng (không chia sẻ với các tiến trình khác).
Commit Size: Lượng bộ nhớ ảo (RAM + page file) dành cho một tiến trình.
Bạn có thể chọn các thông số hiển thị trong View -> Select Column.
Trình duyệt Mozilla Firefox 4.0.1 và Add-on MemoryFox sẽ được sử dụng trong thử nghiệm này. Đầu tiên mở vài tab trong Firefox, TaskManager thông báo Working Set là 126MB và Memory là 100MB.
Kích hoạt Memory Fox, chúng ta có thể thấy lượng bộ nhớ sử dụng giảm một cách đáng kể.
Thông số Working Set và Memory giảm mạnh.
Và một tiến trình mới do Memory Fox tạo ra.
Theo dõi thêm một lúc ta có thể thấy sự thay đổi thường xuyên ở thông số Working Set và Memory (tăng lên rồi lại giảm đi), hiện tượng này là do trong quá trình sử dụng Firefox đòi hỏi thêm bộ nhớ và tác dụng của addon Memory Fox làm giảm lượng bộ nhớ này.
Lượng bộ nhớ cần sử dụng tăng dần.
Sau khi tăng lên 11,5MB thông số Working Set và Memory giảm xuống lần lượt là 5,5MB và 3MB.
Giảm về 5.5MB và 3,1MB sau đó lại tăng.
Và quá trình tăng lên rồi giảm xuống cứ lặp lại như vậy, nếu thử chuyển qua giữa các tab đồng thời cuộn lên xuống thì sự dao động còn rõ rệt hơn. Từ kết quả thử nghiệm, thoạt tiên bạn có thể nhận xét Memory Fox có tác dụng làm giảm bộ nhớ một cách đáng kể, tuy nhiên hãy chú ý thông số Commit Size hầu như không hề thay đổi, luôn xấp xỉ 120MB và thấm chí còn tăng lên khi Memory Fox được kích hoạt.
Như đã đề cập ở trên thông số này cho biết lượng bộ nhớ ảo sử dụng bởi một tiến trình và lượng bộ nhớ này có thể nằm ở RAM hoặc trên vùng page file của ổ cứng. Khi được kích hoạt Memory Fox sẽ chuyển một phần bộ nhớ đang được sử dụng bởi Firefox vào bộ nhớ ảo của hệ thống dẫn đến Firefox tạm thời mất đi một số dữ liệu lưu trên vùng nhớ đó. Khi Firefox cần đến các dữ liệu này, nó sẽ yêu cầu Windows chuyển lại chúng từ vùng nhớ ảo sang vùng bộ nhớ đang được sử dụng. Hiểu một cách đơn giản là nếu bạn đang có 3 tab trên Firefox thì MemoryFox sẽ cất dữ liệu của 2 tab mà bạn không xem vào phân vùng trên ổ cứng và đến khi bạn chuyển tab thì các dữ liệu này lại được đọc từ ổ cứng vào RAM. Và như bạn đã biết tốc độ đọc từ ổ cứng chậm hơn nhiều so với đọc từ RAM nên quá trình dịch chuyển này thậm chí còn làm cho Firefox hoạt động chậm hơn.
Kết luận
Qua quá trình phân tích bạn có thể thấy MemoryFox không làm giảm lượng bộ nhớ tiêu thụ của Firefox mà nó chỉ chuyển bộ nhớ từ vùng này sang vùng khác. Bất cứ hệ điều hành nào cũng có thể làm tốt công việc này nên tốt nhất để khắc phục tình trạng ngốn bộ nhớ của Firefox bạn nên áp dụng một số cách sau hơn là trông chờ vào các “memory cleaner”:
- Tắt các add-on không cần thiết.
- Hạn chế mở quá nhiều tab.
- Restart Firefox sau một khoảng thời gian sử dụng.