Большая загрузка ЦП в процессе Java под Linux - PullRequest
0 голосов
/ 15 сентября 2011

У меня проблемы с определением того, что не так с моим программным обеспечением.Ситуация такова;-Программа всегда работает в фоновом режиме и каждые X минут выполняет некоторые действия.-Право теперь он настроен каждую минуту проверять определенный каталог и видеть, есть ли в нем новые файлы.-Если есть новые файлы, они обрабатываются и перемещаются в другое место.-Если нет, он просто регистрирует событие и снова простаивает.

Я предполагаю, что при появлении новых файлов загрузка ЦП может быть несколько высокой.Проблема возникает, когда, даже если я не помещаю новые файлы в каталог в течение многих дней, загрузка ЦП будет увеличиваться до ~ 90% каждую минуту, когда он проверяет новые записи, а затем через несколько секунд возвращается к использованию <1%. </p>

Один и тот же процесс в Windows кажется каким-то стабильным, всегда оставаясь при низкой загрузке процессора.

Если я ежемесячно наблюдаю за активностью ЦП, я вижу, что средняя загрузка ЦП для моего процесса Java продолжает расти(без помещения новых файлов для «активации» остальной части процесса), и мне нужно перезапустить процесс, чтобы он вернулся к более низким уровням загрузки ЦП.

Мне действительно не случается понимать это поведение, поэтому ядействительно не знаю, что может повлиять на это.

Если файл журнала несколько «большой», например, 10–20 МБ, потребуется ли столько процессора для записи новой записи каждую минуту?

Еслидля этого процесса в classpath загружено много библиотек, будет ли увеличено использование ЦП, хотя многие из этих библиотек не будут использоваться чаще всего?

Извините, если я не очень четко сформулировал свой вопрос, я несколько новичок в этом.

Спасибо всем заранее, с уважением.

- edit-- Я отмечаюВаши советы, я сделаю небольшой мониторинг и опубликую некоторый код / ​​результаты, чтобы поделиться с вами и посмотреть, что вы можете придумать!

Я действительно потерян прямо сейчас!

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Вы говорите о простом консольном приложении или приложении Swing / AWT?

Запускается ли приложение каждую минуту через ОС, лежащую в основе по расписанию, или это простой серверный процесс?

Если процесс запускается как сервер, как вы запускаете виртуальную машину?(серверная виртуальная машина или клиентская виртуальная машина - переключатель на строке cmd)

Вы также можете проверить сборщик мусора, иногда каркас журналирования использует слишком много объектов, не освобождая их ссылки.

С уважением

М.

0 голосов
/ 15 сентября 2011

Если ваш пользовательский код мониторинга вызывает проблемы, вы всегда можете использовать что-то стандартное, например, Apache Commons IO's FileAltivationMonitor .Он прост в реализации и может быть быстрее, чем исправление текущего кода.

...