Будет ли JVM в Linux потреблять больше кучи, чем Solaris?

Недавно у нас было два проекта миграции серверов с Solaris на RedHat Enterprise на виртуальной машине. Оба они являются приложениями J2EE, работающими на OC4J 10.1.3.5.

Одно интересное явление, которое мы обнаружили, заключалось в том, что экземпляры JVM OC4J, работающие в Linux, на самом деле занимают больше кучи, чем экземпляры в Solaris. Например, одно из наших приложений будет потреблять только 30-40 МБ размера кучи в Solaris при новом запуске, в то время как в Linux оно уже потребляет 400 МБ при запуске, что составляет 10-кратную разницу. Аналогичный случай произошел с другим приложением.

Мы проверили, что все версии JVM и аргументы запуска одинаковы.

Я искал и нашел этот похожий вопрос: Разница между jvm в Linux и машины Solaris

Однако я не смог найти никаких технических статей по этому вопросу, может быть, это связано с какой-то проблемой конфигурации на машине с Linux, а не с самой JVM?

Мы используем JDK 1.6.0_38-b05 64bit

Изменить: вот аргументы запуска JVM: -server -Xms2560M -Xmx2560M


person am5a03    schedule 10.12.2013    source источник
comment
У серверов разный объем памяти? JVM смотрит на это и принимает решение о правильном начальном размере. - Кроме того, расскажите нам, что произойдет, если вы ограничите JVM Linux до -Xmx64m.   -  person Ingo    schedule 10.12.2013
comment
Это сильно зависит от реализации JVM. Вы используете Oracle/Sun JVM на обоих?   -  person CodeChimp    schedule 10.12.2013
comment
Это размер рабочего набора (RSS) или виртуальное адресное пространство? Последнее, я думаю, не имеет значения.   -  person Raedwald    schedule 10.12.2013
comment
Было бы полезно, если бы мы видели параметры запуска JVM. Они могут совпадать между серверами, но, как указал @Ingo, есть значения по умолчанию. Поэтому, если вы, например, не укажете начальный размер, значение по умолчанию будет различаться для разных серверов.   -  person Brandon    schedule 10.12.2013
comment
Я видел похожее поведение при переходе с другого дистрибутива Linux (не помню какого) на Redhat Enterprise Linux 6. Думаю, вам следует обратиться в службу поддержки RedHat.   -  person jeroen_de_schutter    schedule 10.12.2013
comment
@Ingo Мы явно установили для аргументов -Xms и -Xmx значение 2560M. Аргумент запуска в JVM: -server -Xms2560M -Xmx2560M   -  person am5a03    schedule 10.12.2013
comment
Задействованы ли нативные библиотеки? Какие команды вы используете для измерения использования памяти? Что говорит pmap -x java_pid в обеих ОС?   -  person jlliagre    schedule 11.12.2013