Количество памяти занятой процессом значительно меньше чем уменьшение свободной памяти (8Мб vs 160Мб)?
> Виртуализация openvz

C этого и надо было начинать. В OpenVZ как-то странно считается память, там считается все виртуальное пространство, которое выделено процессу. А поскольку линуксовые программы обычно выделяют память в несметном количестве и без всякой логики, вся она учитывается как занятая. Например, если у вас есть многопоточная программа вроде Апача, допустим, из 20 потоков, то в OpenVZ каждый поток сразу выделяет под стек 8 Мб, и это уже считается как 160 Мб памяти (в то время как на реальной железке 8 Мб — это лишь максимальный размер, а выделяется столько, сколько по факту использовано, т.е. намного меньше). При этом разработчики программ, естественно, на такой сценарий не рассчитывали, и никаких мер по снижению выделяемого виртуального пространства не предпринимают. И вам приходится устраивать пляски с ulimit, чтобы хоть как-то улучшить ситуацию.

Вот например: www.webhostingtalk.com/showthread.php?t=855618

Я вам советую попробовать для сравнения виртуальную машину на основе Xen или физическую машину. У вас сразу все цифры придут в соответствие. OpenVZ позволяет хостеру продавать больше памяти, чем у него есть в сервере, и это очень непрозрачная вещь. Не советую использовать эту технологию.
Какой-то стрёмный вывод у free: почему "-/+ buffers/cache" совпадает с «mem»?
Может лучше было бы сравнить cat /proc/meminfo до и после?