Привет, я работаю над веб-инструментом Java. У нас есть два экземпляра нашего инструмента, развернутые на двух отдельных серверах: один в производстве (используется одновременно многими клиентами) и один в среде разработки, который я редко использую. Оба экземпляра, dev и production, развернуты на точно эквивалентных серверах с одинаковыми характеристиками оборудования, имеют точный код, размер кучи, сервер приложений, версию и т. д.
Но я наблюдаю большую медлительность в рабочем экземпляре по сравнению с экземпляром разработки даже в нечетные часы ночи, когда использование клиентов равно нулю (у нас есть инструменты для мониторинга использования клиентов в производстве). Это удивительно, потому что все факторы идентичны. Я предполагаю, что, поскольку производственный экземпляр активно используется, куча там почти заполнена и фрагментирована, в то время как куча в dev относительно свободна и не фрагментирована. Вот почему экземпляр dev намного быстрее, хотя все идентично. Разумно ли это предположение, поскольку фрагментированная почти полная куча будет тратить больше времени на создание объекта и, таким образом, снизит производительность?