The ZFS ARC cache tries to keep a balance between most frequently and least recently used data. Also, by default, ZFS ARC only fills out to a maximum of about half the available RAM. You can change that at runtime (by writing the size in bytes to
/sys/module/zfs/parameters/zfs_arc_max
or setting the module e.g. in /etc/modporbe.d/zfs.conf
to something like this options zfs zfs_arc_max=<size in bytes>
). But be careful, as the ZFS ARC does not play that nice with the OOM killer.
Maybe there is some combination of settings that will get it to cache more aggressively; just saying that it's not a given that it will do so.