Много потоков и использование памяти для процессов "Java" на Mac OSX 10.6.7 - PullRequest
6 голосов
/ 02 апреля 2011

Я занимаюсь разработкой веб-приложения с использованием java + gwt и NetBeans 6.9.1 + Glassfish 3.0.1. После нескольких часов разработки производительность моей системы ухудшается, поэтому я всегда проверяю Activity Monitor, получает ли какой-то процесс всю память или процессор. Я всегда замечаю пару процессов с именем 'java', которые порождают около 50-60 потоков. Моя система работает очень медленно, пока я их не убью, и я снова смогу нормально работать.

Я использую режим отладки NetBeans во время разработки, но даже когда я прекращаю режим отладки, процесс java продолжает снижать производительность системы, пока я его не убью. Я также иногда сталкиваюсь с ошибкой «java.lang.OutOfMemoryError: пространство кучи Java», которая происходит через несколько часов (скажем, 12-16), когда открывается мой экземпляр NetBeans (это происходит со мной с той же версией NetBenas также в среде Linux ). В этом случае мне нужно закрыть и снова открыть его, чтобы он снова скомпилировался / работал.

Кто-нибудь испытывал такие же проблемы и / или знает, как их избежать? Как вы думаете, эта проблема может быть вызвана какой-то проблемой в приложении, которое я разрабатываю, или это может быть утечка памяти Netbeans или ошибка?

1 Ответ

0 голосов
/ 13 декабря 2012

У нас похожие проблемы с затмением. Мы с большим терпением опробовали следующие шаги и решили некоторые проблемы.

Практика кодирования

1) Проверенный сеанс, связанный с db / hibernate открытие и закрытие в коде на стороне сервера и устранение сотен случаев плохой практики незакрытых сеансов (это улучшает даже производительность развертывания)

2) Проверено и исправлено неправильные действия io (это улучшает производительность развертывания)

Легкий IDE

1) Убедитесь, что в IDE есть только те плагины, которые вам нужны. Хорошо иметь несколько установок IDE, настроенных для задачи.

Пример -

a) GWT Dev - В одном экземпляре IDE есть только необходимые плагины для GWT dev

b) Рефакторинг кода - В одном экземпляре IDE установлены команды findbugs, PMD, CodePro

Примечание: Всегда начинайте с минимальной настройки IDE (с кодом проекта Hello World и без него). Профиль и проверяют, не пропускают ли некоторые плагины память при создании экземпляра или при регулярном использовании .

И, как сказал Утсун, - вам повезло, что дерьмо из-за недостатка памяти случается гораздо чаще, если некоторые из нас зависают на примитивном оборудовании.

Мне бы очень хотелось, чтобы другие поделились некоторыми советами по сбору или поиску оптимизации памяти в среде IDE, кроме использования большего количества оборудования. Пример - сборка eclipse или netbeans только с абсолютно необходимыми плагинами для gwt / maven / svn. Выбросьте все остальные уловки.

...