Заполнение памяти в Java Программы, работающие на разных компьютерах - PullRequest
1 голос
/ 14 июля 2010

У меня есть Java-программа, которая выполняет много математических операций и обрабатывает множество экземпляров объектов. Но самое интересное, что я заметил, это то, что на разных компьютерах объем памяти резко отличается.

На Intel Core 2 Duo (2 ГГц) с 2 ГБ оперативной памяти и WinXP 32 бит - моя программа использует около 185 МБ памяти. Свойства JVM: -Xms768m -Xmx1300m (при установке более 1300 м я получаю исключение нехватки памяти во время выполнения) .

На Turion X2 (2,1 ГГц) с 3 Гб оперативной памяти и WinXP 32 бит - моя программа использует около 380 Мб памяти. Свойства JVM: -Xms768m -Xmx1600m (максимальное значение, которое я могу установить для запуска программы на компьютере - 1600 м) .

Вы знаете, почему такая большая разница?

Ответы [ 2 ]

4 голосов
/ 14 июля 2010

Я полагаю, что сборщик мусора более снисходительный, с большим объемом памяти.

1 голос
/ 14 июля 2010

Для правильного сравнения необходимо:

  • установить точно такие же параметры виртуальной машины.
  • указать, если виртуальная машина совпадает.
  • запустить программу с точно такими же входными параметрами

Скорее всего, как предполагает Гэри, просто виртуальная машина прыгает или выбирает GC в другое время, чем когда вы смотрите. Если потребление является «реальным», то может быть некоторая разница в том, как точка доступа (которую я думаю смотрит на размеры кэша процессора) выбирает для упаковки полей-членов ваших объектов Java в непрерывную структуру - возможно, это добавление несколько байтов pad (для какого-либо объекта, который у вас есть) на платформе, а не на другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...