Вы должны использовать ядро RHEL6 (он же 2.6.32-, он же 042stab) и настроить свои контейнеры с помощью VSwap. См. http://openvz.org/VSwap для получения дополнительной информации. Это делается по умолчанию при новых установках.
Если вам нужны мини-контейнеры, назначьте необходимую оперативную память, а затем увеличьте объем подкачки в два-четыре раза, чтобы включить некоторое «растягивание» памяти CT. Например, для 256M это будет
vzctl set $ CTID --ram 256M --swap 1G --save
Убедитесь, что для других beancounters (особенно privvmpages) установлено неограниченное значение. Еще раз,
Зачем исключать настройки Java, если проблема может заключаться в неправильном понимании параметра -Xmx?
Я бы посчитал правильным размером 2 ГБ или ОЗУ для кучи 1,5 ГБ. Куча - это только часть памяти, которую использует JVM. Собственный код, включая сам код JVM, память, используемую собственными библиотеками, кэш кода, память на основе стека (каждый поток имеет свой собственный стек) и постоянная генерация, все хранятся вне кучи.