Как стать автором
Обновить

Комментарии 21

Неплохое исследование. Все бы так на баги реагировали — жили бы уже давно в мире идеального ПО
Ну нечто идеальное это вообще маловероятная ситуация :-)
Тут уместно выражение: «Уязвимости есть везде, а %productname% еще и удобный!»
Хорошее исследование. Конкретно этого бага не замечал, а с тех пор как на работе дали побольше памяти, вообще за идею не волнуюсь.

А баг не сказать что особо критичный, видимо поэтому и не стали в релизную ветку мержить его. Тут ЕАРы уже на носу, а вы на потребление памяти в джава приложении жалуетесь :)
«Дьявол в деталях», на лицо явная архитектурная ошибка. Я было подумал что исправление могли замержить только в платную версию. Подход в стиле «гонка вооружений», когда вы за счет железа исправляете недостатки ПО, ни к чему хорошему не приведет и не важно что там на носу…
Платная версия (IntelliJ IDEA Ultimate) отличается от бесплатной (Community) только набором дополнительных плагинов для пачки всяких J2EE, фреймворков, языков и технологий. Код платформы одинаковый.
Тому, почему не замёрджили фикс, может быть много причин. Например, фикс слишком масштабный, и его опасно класть в ветку.
Можно найти багрепорт или создать его и попросить в 11.1.3 положить. Не помешает приложить ссылку на этот пост.
… у меня для IDEA уже выставлено Xmx4096m, чтобы хоть как-то работала без особых тормозов с нашим проектом
… и с ростом проекта приходится это значение увеличивать
… на другие IDE переходить не хочется, ввиду отсутствия вменяемых альтернатив, приходится пока только память растить…
Если у вас так память растёт, что 4 Гига и более нужно выделять, то здесь явно что-то не так (разве что проект ну совсем уж гигантский). Создайте багрепорт (http://youtrack.jetbrains.com) со снепшотом, в JetBrains вменяемые товарищи: если будет на что смотреть, они посмотрят.
А вы, совершенно случайно, интеграцию с Maven не используете?
А что с мавеном не так?
На большом проекте (~400) модулей всё плохо.

Работает всё довольно медленно (открытие, синхронизация по POM, сборка). Даже после всяких хитрых хитростей «Make» занимает секунд 5-10 против 1 секунды в «обычном» проекте.

Но самая большая беда — это наличие неких race-condition при импорте проекта. После открытия Maven проекта IDEA «на лету» генерирует обычные проектные файлы (.iml). Так вот, с большой вероятностью, с первого раза она это делает неправильно. Некоторые зависимости просто не импортируются. Нажатие кнопки «Reimport Maven Projects» (иногда приходится тыкать несколько раз) решает эту проблему до следующих изменений в POM файлах. Что хуже всего, на мелких проектах-то всё работает. Проблема, видимо, проявляется, когда количество модулей велико.

В последних версиях стало во многом существенно лучше, но всё равно нам пришлось отказываться от интеграции с Maven и возвращаться к сгенерированным проектам (плюс у нас есть некие дополнительные требования, которые проще поддержать в своём генераторе). Т.е у нас есть свой Maven plugin (по типу maven-idea-plugin), который генерирует *.iml файлы & каталог .idea, которые в свою очередь уже открываются в IDEA. Стало гораздо быстрее и стабильнее.

Но это наш главный проект (который ко всему прочему ещё и весьма странный в плане сборки), в маленьких «сопутствующих» проектах рекомендуемый подход — интеграция через стандартный плагин IDEA. В них всё работает.

Это так, в кратце :)
А для чего нужно столько много модулей? Из какой хоть области проект?
Оказывается, я ошибся, всего ~200 модулей (два раза посчитал из-за target/classes/META-INF/maven/.../pom.xml).

Проект — продукты для страховых компаний.
Не, все-таки мой проект лидирует. у меня 225 модулей.
Насчет проблемы с мавеном — подтверждаю. Когда модулей много идея перестает быть удобной и юзабельной.

Но!
Насчет количества модулей — это уже проблема организации проекта. Вы же не правите все 200 модулей? как правила работа ведется на 1-5 модулях. Получается надо разделять проект и в место модулей подцеплять артефакты.
>Насчет количества модулей — это уже проблема организации проекта. Вы же не правите все 200 модулей? как правила работа ведется на 1-5 модулях. Получается надо разделять проект и в место модулей подцеплять артефакты.

Совершенно верно. Но всё-таки, хочется, чтобы IDE помогала, и так проблем хватает :) Впрочем, со сгенерированными проектами всё довольно шустро работает.
Это очень, очень большой размер хипа, пожалуйста дайте нам memory snapshot (http://devnet.jetbrains.net/docs/DOC-192.pdf)
Спасибо за инструкцию, сделаю в ближайшее время.
Пояните, почему вы считаете эту ошибку архитектурной? По мне это рядовая ошибка реализации.
Ошибкой реализации это было бы если б была ошибка непосредственно в какой-то функции, здесь же метод который лежит глубоко по иерархии и часто вызывается, являясь правильным в то же время.Иерархией занимается архитектор, а не рядовой разработчик, который должен был обратить на это внимание…
Переложили в 11.1.3, спасибо за детальное описание проблемы!
Вот что мне нравится в JetBrains — так это скорость реакции на сообщения об ошибках.
И тем не менее Idea одна из самых шустрых IDE
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории