Я пытаюсь понять использование виртуальной памяти для моего Java-приложения, которое, похоже, зависит от среды, в которой я запускаю свою банку.
У меня две среды:
env 1
cat /proc/version
Linux version 3.5.0-48-generic (buildd@roseapple) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #72~precise1-Ubuntu SMP Tue Mar 11 20:08:23 UTC 2014
java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK Server VM (build 24.45-b08, mixed mode)
env 2
cat /proc/version
Linux version 3.2.0-49-generic (buildd@komainu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #75-Ubuntu SMP Tue Jun 18 17:39:32 UTC 2013
java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
команда:
java -Xms128m -Xmx256m -cp myjar.jar com.test.Main
Я запускаю одну и ту же банку, одну и ту же команду в обеих средах, и использование виртуальной памяти сильно различается.
На env 1 все работает так, как я думаю, с резервированием до 600 МБ виртуальной памяти (куча xmx256m + permGen + прочие мелочи). Однако на env 2 виртуальная память достигает 2600 МБ.
использование физической памяти в обеих средах кажется нормальным и равным заданным размерам.
Я думаю, что виртуальная память должна быть такой же, как в env 1, но я не могу найти объяснения для env 2, чтобы использовать ее так много.
Кто-нибудь испытал это? Что мне следует искать в среде или в конфигурации java?