Почему Glassfish требует гораздо больше памяти в Linux, чем в Windows? - PullRequest
1 голос
/ 29 сентября 2010

В последнее время я работаю со GlassFish 2.1.1, как на Ubuntu Linux, так и на Windows XP.

Рассматривая процессы "java", представляющие asadmin, сервер JavaDB и сам домен сервера приложений GlassFish в Windows (с помощью диспетчера задач), они добавляют чуть более 100 МБ памяти.

Однако, глядя на те же процессы на Linux-боксе (используя «ps aux» и Gnome System Monitor), можно увидеть использование памяти в приблизительном объеме 800 МБ.

Это кажется крайне странныммне.Во всяком случае, я бы предположил, что использование памяти будет менее благоприятным в Windows.В любом случае, я бы не ожидал, что колебание между ними будет ОЧЕНЬ драматичным.Есть что-то фундаментальное, что я здесь упускаю?Мне не обязательно нужна подробная информация о профилировании, мне просто нужна примерно точная цифра для общего использования памяти (реального мира) на двух платформах.

1 Ответ

2 голосов
/ 29 сентября 2010

Потому что вы измеряете это по-другому.

Общеизвестно, что трудно измерить использование памяти в системах, которые поддерживают виртуальную память и разделяемую память; Linux и Windows попадают в эту категорию.

В основном это происходит вокруг

  • Считаете ли вы страницы, которые выделены, но не отображаются на данный момент?
  • Считаете ли вы потенциально общие страницы? (например, из сопоставленных файлов / исполняемых файлов / библиотек и т. д.)

Ответы не так тривиальны.

Linux предоставляет два «простых» измерения памяти, размер RSS и ВМ, ни один из которых точно не отражает то, что люди обычно думают о том, что они имеют в виду, когда говорят «сколько памяти использует». То, что думают программисты, часто находится где-то между RSS и размером VM.

...