1. Java / Говнокод #2937

    +77.6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    public void run()
        {
            try
            {            
                startExport();
            }
            catch (Throwable _t)
            {
                sendEvent(""+_t.getMessage(), true);
                logger.log(Level.SEVERE, charset, _t);
            }
            finally
            {
                System.gc();
            }
        }

    А ещё этот человек дёргает в одном сервисе gc каждые 4 секунды. Любые попытки ударить по рукам нарываются на отлуп: "так работает же!". Это не студент! Это реальный production код!

    Запостил: konsoletyper, 06 Апреля 2010

    Комментарии (15) RSS

    • Человек экономит память компьютера. :-D
      Ответить
    • Иногда бывает необходимо явно вызывать gc(). Если в десктопном приложении не дергать явно gc(), то рано или поздно оно отожрет максимум памяти который ему дан. А так его можно "держать в форме" :)
      Ответить
      • Иногда
        Ответить
        • Все верно, это мой код, и gc() я вызываю вполне осознанно, он там и в процессе экспорта вызывается в компании с логгированием использования памяти. А вызов раз в четыре секунды для сервера продиктован характером нагрузки и временем обработки запросов.
          Хотя да, мой параноидный говнокод таки работает в отличии от, скажем так, некоторого участка моего коллеги, который в версии недельной давности умудрялся съедать 500 метров на обработку 4 метрового json'а. Впрочем я думаю он сам порадует почтенную публику своими шедеврами :)
          Ответить
          • >А вызов раз в четыре секунды для сервера продиктован характером нагрузки и временем обработки запросов.

            А также тем, на каком парке железа ему предстоит крутится....
            Ответить
          • Коллега банально ошибся в коде, а не сознательно писал такую вот туфту. Тем более, что коллега написал:
            1. Внутренний транспорт
            2. GUI
            3. Бизнес-логику
            4. Поддержку периферии
            5. Отчёты и печатные формы
            в то время, как ты корпел над всего лишь... внешним транспортом. И, кстати, в апреле мой код, более гибкий и выразительный, тоже заработал. А вот теперь вопрос: насколько твой код готов к тому, чтобы в него вносились изменения при возникновении хотелок от пользователей?
            Ответить
            • выйдите на улицу и попиздитесь

              устроили тут разборки мля
              Ответить
          • Кстати, что-то не вижу я в finally логгирования памяти. Тем более, что System.gc() не означает запуска GC в текущем работающем потоке. Это значит, что мы толкнули JVM с просьбой "ау, если тебе особо заняться нечем, можешь почистить кучу в фоновом потоке". Т.е. для твоего логгирования пользы мало. А вот случаи, когда это действительно нужно, можно по пальцам пересчитать. И никаким "характером нагрузок" тут ничего не объяснишь - в этом смысле дяди из Сана, делающие JVM и GC для него, лучше тебя подумали. Ибо думали они годами и не в одиночку.
            Ответить
    • Хуже дураков бывают только дураки убежденные и дураки инициативные
      Ответить
    • Давайте посрём друг на друга.)))
      Ответить
    • Уважаемые Алексей (konsoletyper) и Андрей (guest)

      Ваша проблема ВЫШЕ, причем не выше на этой странице, а выше по оргструктуре Вашего "отдела разработки и внедрения программного обеспечения".
      Ответить
    • Нах надо вызывать gc()? Все равно реально сборка мусора запустится когда самой VM будет угодно...
      Ответить

    Добавить комментарий