Миф о Java

Про языки с автоматическим управлением памятью в целом и про Java в частности существует один довольно забавный миф – приложения с автоматическим управлением памяти не текут или текут редко. Бугагашеньки.

Берем известное и крайне популярное среди Java-разарботчиков приложение Intellij IDEA. Открываем в этом приложении большой проект (на мелком не так в глаза бросается) и работаем. Ближе к концу второго-третьего дня работы приложения, объем используемой памяти вырастает с изначальных 300 мегабайт до 700 и IDEA начинает ощутимо тормозить. Полагаю, что дальше будет только больше, лично мне на 700 это дело надоело, и я перезапустил приложение.

Что вобщем-то и требовалось доказать, напортачить можно даже на том языке, где создатели выдали тебе специальный не снимаемый памперс – было бы желание.

7 Comments Миф о Java

  1. reaverdrop

    Вы не правильно поняли концепцию – java или любой другой язык не может думать за вас, какие объекты вам нужны а какие больше нет. Простоя в яве облегчили работу с памятью путем ее автоматической очистки, когда на объект больше нет ссылок

    Reply
    1. Alexander Stavonin

      В теории это все просто великолепно. На практике – программы Java текут ничуть ни меньше и ничуть не больше чем программы на C/C++. Разве что всегда можно отмазаться в духе “это же Java! добавьте памяти, ведь память это давно не ресурс”. :mrgreen:

      Reply
      1. reaverdrop

        C/C++ и java нельзя в таком духе сравнивать. Есть различные классы задач которые более эффективно может решить тот или иной язык. Например если нам нужно в сжатые сроки написать сложное серверное приложение с запутанной бизнес логикой по обработке допустим биржевой информации с кластеризацией и высокой производительностью, то альтернатив джаве нет.
        Плохие программы текут, хорошие нет. Для пример сервер приложений jboss – может хоть год без перезагрузки под высоким потоком клиентов. Или эклипс у меня не выключается неделями.

        Reply
        1. alex

          То что приложения бывают разные – это очевидно. Так же есть куча приложений на C/C++ которые не требуют перезагрузки годами. Речь-то о другом. Очень часто, Java преподносится как панацея от страшных и ужасных утечек памяти (так почти каждая книга по этому языку начинается), в то время как приложения на Java еще как текут.

          Reply
  2. Gabriel Angelos

    Настройте в IDEA несколько дополнительных Garbage Collector-ов и перейдите уже с XP на что-то 64-битную и запустите 64-битную IDEA.

    Запущена несколько недель. Проект 10 млн + строк. Зажирает от 400 до 4 гб оперативки, сама чиститься.

    Reply
      1. Alexander

        IntelliJ IDEA – это не редактор, а среда разработки.

        Нужен редактор – Notepad тебе в руки.

        Отключи все плагины, отключи анализ кода, сделай из среды разработки текстовый редактор, поставь в параметрах JVM -Xms128M и наслаждайся.

        У меня на работе тоже есть товарищ, который с 16Г памяти на борту считает каждый мегабайт памяти занятой разными приложениями.

        У каждого свои странности..

        Reply

Leave a Reply to Gabriel Angelos Cancel reply