ClamAV memegang string pencarian menggunakan string klasik (Boyer Moore) dan algoritma ekspresi reguler (Aho Corasick). Menjadi algoritma dari tahun 1970-an mereka sangat efisien dalam memori.
Masalahnya adalah sejumlah besar tanda tangan virus. Hal ini menyebabkan struktur data algoritma tumbuh cukup besar.
Anda tidak dapat mengirim struktur data itu untuk ditukar, karena tidak ada bagian dari struktur data algoritma yang lebih jarang diakses daripada bagian lain. Jika Anda memaksa halaman mereka untuk menukar disk, maka mereka akan direferensikan beberapa saat kemudian dan langsung bertukar kembali. (Secara teknis kami mengatakan "akses acak dari struktur data memaksa seluruh struktur data berada dalam kumpulan memori proses yang bekerja" ".)
Struktur data diperlukan jika Anda memindai dari baris perintah atau memindai dari daemon.
Anda tidak dapat menggunakan hanya sebagian dari tanda tangan virus, karena Anda tidak bisa memilih virus mana yang akan Anda kirim, dan karenanya tidak dapat menentukan tanda tangan mana yang akan Anda butuhkan.
Inilah memori yang digunakan pada mesin 32-bit yang menjalankan Debian Wheezy dan clamd.
# ps_mem.py
Private + Shared = RAM used Program
281.7 MiB + 422.5 KiB = 282.1 MiB clamd
Sunting: Saya melihat seseorang menyarankan untuk mengatur ukuran yang ditetapkan penduduk. Jika ini berhasil maka memiliki ukuran set penduduk kurang dari ukuran set kerja akan menyebabkan proses meronta-ronta ke dan dari swap. Ini akan menurunkan kinerja seluruh sistem secara substansial. Bagaimanapun halaman manual Linux untuk setrlimit (RLIMIT_RSS, ...) mengatakan bahwa pengaturan ukuran set penduduk tidak lagi didukung dan tidak pernah memiliki efek pada proses yang memilih untuk tidak memanggil madvise (MADV_WILLNEED, ...).