Я изменил свой командный файл для сходства следующего:
#! /bin/bash
echo 'connecting...'
/etc/netlock/cvc -c connection:account:password
read -p "Press a key to disconnect."
echo 'disconnecting...'
/etc/netlock/cvc -d
"Используемое" поле в top
отражает общую сумму используемой RAM, включая это процессами, буферами файлов и кэшем. Но число RES показывает только сумму RAM, используемой процессом, эксклюзивным из буферов файлов.
Для реального наблюдения, сколько RAM используется без буферов используйте free
команда и взгляд на -/+ buffers/cache
строка. Число в "используемом" столбце показывает, сколько RAM на самом деле используется процессами.
Вот пример:
$ free
total used free shared buffers cached
Mem: 2057196 1812352 244844 0 344768 833660
-/+ buffers/cache: 633924 1423272
Swap: 2097148 0 2097148
Этот вывод показывает, что система имеет 2 ГБ RAM, которых 1.8 ГБ используется. Однако 344 МБ из этого используются буферами, и 833 МБ используется кэшем. Вычитание, которое оставляет только 633 МБ, используемые процессами и ядром.
Работайте free
команда прежде и после запуска Вашего приложения Java для получения лучшее представление о том, что продолжается.
Править: удаленные ссылки на память ядра, о которой не сообщают эти инструменты.
Не позволяйте кэшу, и подкачка обнуляет, волнуют Вас, так как это - хост VPS.
Кэширование ввода-вывода и свопинг, вероятно, обрабатываются базовым хостом виртуализации, и они, вероятно, решили, что свопинг и кэширование i/o в гостях, с их установкой, налагают потерю производительности или что-то, которое могло бы быть хорошей вещью, так как это означает, что Вы добираетесь, 2 ГБ РАБОТАЛИ только за Вашими процессами. Обычно инженеры поставщика услуг хостинга знают то, что они делают.
Это может также быть причиной, почему вещи не вполне складывают с тех пор, из-за способа, которым Ваш VPS заключен в тюрьму (если они используют что-то как OpenVZ), Вы не могли бы видеть все вещи, которые израсходовали Вашу RAM в вершине, но требуются, чтобы Ваши процессы выполнили и таким образом считаются против Вашей квоты.
Также Вы не получаете целое изображение, если все, с чем Вы выдерживаете сравнение, является Вашим одним процессом Java, так как Ваше приложение могло бы запустить дополнительные процессы, даже набор их, которые складывают. Столько памяти, не составляемой, tho, могла легко быть утечкой памяти приложения Java. Это порождает процессы и выделяет RAM, не возвращая их назад ОС правильно по всей вероятности.
Ваше приложение запускает или использует какой-либо собственный процесс? Это порождает другие процессы или потоки?