Firefox
ngay từ những phiên bản đầu tiên đã bị người dùng đánh giá là trình
duyệt ngốn RAM nhất trong số các trình duyệt. Vì thế mà rất nhiều người
đã cố gắng tìm ra thuật toán để tối ưu việc sử dụng RAM cho trình duyệt
này.
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.