The various Check Point tools like cpview, when reporting the value for "free", do not distinguish between memory allocated for code execution vs. memory allocated for buffering/caching. Memory allocated for the latter can be swiped at any time for code execution if needed. So the free value reported by cpview reveals the amount of memory not being used for anything at all.
If you look at the full output for free -m like this:
total used free shared buffers cached
Mem: 7843 7678 165 0 28 2122
-/+ buffers/cache: 5527 2316
Swap: 8189 0 8189
Looking at the "Mem" line you might panic because it looks like there is very little free memory (165MB). The line you want to look at to see how much memory is actually available for code execution if needed is "-/+ buffers/cache". As we can see 5527MB is actually being used for code execution with 2316MB used for caching & buffering and unused (28+2122+165 from line 1). So if more memory is needed for code execution 2316MB is available, not 165MB as reported on the first line (and by the various Check Point tools).
--
My Book "Max Power: Check Point Firewall Performance Optimization"
Second Edition Coming Soon
Gateway Performance Optimization R81.20 Course
now available at maxpowerfirewalls.com