Про языки с автоматическим управлением памятью в целом и про Java в частности существует один довольно забавный миф – приложения с автоматическим управлением памяти не текут или текут редко. Бугагашеньки.
Берем известное и крайне популярное среди Java-разарботчиков приложение Intellij IDEA. Открываем в этом приложении большой проект (на мелком не так в глаза бросается) и работаем. Ближе к концу второго-третьего дня работы приложения, объем используемой памяти вырастает с изначальных 300 мегабайт до 700 и IDEA начинает ощутимо тормозить. Полагаю, что дальше будет только больше, лично мне на 700 это дело надоело, и я перезапустил приложение.
Что вобщем-то и требовалось доказать, напортачить можно даже на том языке, где создатели выдали тебе специальный не снимаемый памперс – было бы желание.
Вы не правильно поняли концепцию – java или любой другой язык не может думать за вас, какие объекты вам нужны а какие больше нет. Простоя в яве облегчили работу с памятью путем ее автоматической очистки, когда на объект больше нет ссылок
В теории это все просто великолепно. На практике – программы Java текут ничуть ни меньше и ничуть не больше чем программы на C/C++. Разве что всегда можно отмазаться в духе “это же Java! добавьте памяти, ведь память это давно не ресурс”. :mrgreen:
C/C++ и java нельзя в таком духе сравнивать. Есть различные классы задач которые более эффективно может решить тот или иной язык. Например если нам нужно в сжатые сроки написать сложное серверное приложение с запутанной бизнес логикой по обработке допустим биржевой информации с кластеризацией и высокой производительностью, то альтернатив джаве нет.
Плохие программы текут, хорошие нет. Для пример сервер приложений jboss – может хоть год без перезагрузки под высоким потоком клиентов. Или эклипс у меня не выключается неделями.
То что приложения бывают разные – это очевидно. Так же есть куча приложений на C/C++ которые не требуют перезагрузки годами. Речь-то о другом. Очень часто, Java преподносится как панацея от страшных и ужасных утечек памяти (так почти каждая книга по этому языку начинается), в то время как приложения на Java еще как текут.
Настройте в IDEA несколько дополнительных Garbage Collector-ов и перейдите уже с XP на что-то 64-битную и запустите 64-битную IDEA.
Запущена несколько недель. Проект 10 млн + строк. Зажирает от 400 до 4 гб оперативки, сама чиститься.
Причем тут XP? Я вообще с вендой не работаю. Но 4 гига памяти на редактор это да, это сильно!
IntelliJ IDEA – это не редактор, а среда разработки.
Нужен редактор – Notepad тебе в руки.
Отключи все плагины, отключи анализ кода, сделай из среды разработки текстовый редактор, поставь в параметрах JVM -Xms128M и наслаждайся.
У меня на работе тоже есть товарищ, который с 16Г памяти на борту считает каждый мегабайт памяти занятой разными приложениями.
У каждого свои странности..