Мы подготовили руководство из 10 шагов, как повысить производительность ваших Java-приложений. Мы также предоставляем бесплатные пробные загрузки для новых мощных инструментов.

вы смотрите: замедляет ли Java мой компьютер

Как повысить производительность приложений Java за 10 шагов

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

Являетесь ли вы разработчиком, имеющим доступ к исходному коду, или просто конечным пользователем, пытающимся ускорить раздражающе медленное приложение Java, у нас есть хорошие новости: есть шаги, которые вы можете предпринять для повышения производительности.

Является ли Java таким же, как JavaScript?

Короче говоря, нет; Java и JavaScript — две совершенно разные технологии. Хотя обе технологии являются объектно-ориентированными, Java представляет собой среду разработки, в которой программисты могут создавать приложения, предназначенные для локального запуска в физической памяти системы.

JavaScript, с другой стороны, был разработан для создания веб-приложений и часто совпадает с другими веб-технологиями, такими как HTML и CSS. Сегодня мы рассмотрим лучшие способы повышения производительности приложений, написанных на Java, а не на JavaScript.

Причины низкой производительности приложения

Причин неэффективной работы приложения множество, хотя основными причинами являются несколько проблем. Естественно, первыми двумя причинами являются плохой дизайн и некачественный код.

Хотя IDE и редакторы кода выделяют тесты и объекты, чтобы сделать их более удобочитаемыми, между компьютерами и людьми существует разрыв в общении. Вы будете делать ошибки при создании приложения — этого не избежать.

Иногда компьютер не понимает ваших намерений. Скорее, он только выполняет инструкции, которые ему даются. Помимо недостатков алгоритмов и кода, еще одной распространенной причиной является нехватка ресурсов.

Локальное оборудование, такое как ОЗУ и циклы ЦП, влияет на производительность приложения, как и другие ресурсы, такие как пропускная способность сети. Кроме того, обратите внимание, что проблемы с локальной операционной системой часто влияют на производительность приложений.

Как повысить производительность Java-приложений — 10 шагов

Прежде чем мы углубимся в каждый конкретный шаг, мы хотели бы дать вам общий обзор того, как улучшить производительность & скорость приложений Java следующим образом:

<ол>

  • Выполните профилирование и нагрузочное тестирование. Профилирование вашего Java-приложения поможет выявить болевые точки и узкие места.
  • Очистить код и пересмотреть алгоритмы — чистый код легче поддерживать, редактировать, читать и улучшать; корректировка ваших алгоритмов уменьшает количество тавтологических вызовов функций.
  • По возможности избегайте рекурсии. В некоторых случаях рекурсия является неизбежным злом, хотя ее следует использовать с осторожностью.
  • Обновите аппаратное обеспечение системы: низкая производительность приложений может быть связана не с плохим кодом и алгоритмами; вместо этого основная причина может быть связана с системой, в которой запущено приложение.
  • Увеличить пропускную способность LAN и WAN — не все функции взаимодействуют с локальным оборудованием; если ваше приложение общается с удаленными системами, виновата может быть ваша сетевая инфраструктура.
  • Приведите в порядок свою операционную систему. Загрязненные операционные системы нуждаются в обслуживании, чтобы приложения могли работать с максимальной отдачей.
  • Используйте StringBuilder для повышения эффективности — строки почти неизбежны в большинстве приложений, но операция “+=” крайне неэффективна.
  • Используйте кэширование для повышения производительности. Кэширование – один из лучших способов сократить количество избыточных экземпляров объектов и вызовов функций.
  • Предпочтите стек куче – стек более эффективен в отношении системных ресурсов, поскольку он поддерживает сам себя и освобождает память, занимаемую несуществующими объектами.
  • Влияние на управление памятью. В крайнем случае иногда необходим доступ к динамической памяти. Вам потребуется выбрать правильный метод сборки мусора.
  • С учетом сказанного давайте более подробно рассмотрим каждый метод повышения производительности Java-приложений.

    Похожая запись: Мониторинг Apache Tomcat

    1. Выполните профилирование и нагрузочное тестирование

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

    Первым инструментом, который мы рекомендуем использовать, является программное обеспечение для профилирования Java. Одним из таких примеров является YourKit, решение, подходящее как для предприятий, так и для отдельных пользователей. YourKit предлагает различные лицензии, в том числе корпоративные, академические, с открытым исходным кодом и по количеству рабочих мест.

    YourKit Java Profiler

    Его функции включают, помимо прочего, следующее:

    <ул>

  • Профилирование производительности ЦП
  • Профилирование производительности памяти
  • Обнаружение утечки памяти
  • Потоки и анализ синхронизации
  • Тестирование производительности веб-сайтов, баз данных и операций ввода-вывода
  • Этот инструмент был разработан для использования в локальных системах, удаленных системах, проектах, находящихся в разработке, и даже в рабочем программном обеспечении. Однако YourKit — не единственный качественный Java-профилировщик, и ему приходится серьезно конкурировать с другими решениями, такими как EJ-Technologies, которые создали < span>JProfiler.

    Этот инструмент очень похож на YourKit и предоставляет параметры тестирования для локальных и удаленных сеансов, автономные триггеры, сравнение снимков, отслеживание запросов (HTTP, RMI, веб-службы, EJB, события AWT, запуски потоков). и т. д.), а также создание пользовательских зондов среди многих других функций. Наконец, JProfiler также имеет инструменты аппаратного обеспечения, потоков, телеметрии и профилирования базы данных.

    узнать больше  Лучшие домашние компьютеры 2022 года: настольные ПК и Mac - лучший настольный компьютер

    2. Очистите код и пересмотрите алгоритмы

    Исходный код программного обеспечения подобен первому наброску романа: он никогда не бывает идеальным после первой итерации и требует значительных изменений, прежде чем он будет окончательно отшлифован. Прежде всего, вы должны стремиться писать чистый код, насыщенный комментариями, чтобы вы могли перемещаться по тексту и легко запоминать, почему был создан экземпляр каждого объекта и почему была вызвана каждая функция.

    Хотя чистота кода сама по себе не ускорит работу Java-приложения, она поможет вам более эффективно удалять ненужный код и искать слабые места и избыточность в ваших алгоритмах. Чистый код также упрощает процесс отладки и помогает исправить ошибки (например, утечки памяти), обнаруженные после профилирования и нагрузочного тестирования программного обеспечения.

    Еще один вариант, который стоит рассмотреть, — это профилировщик Java, который является частью пакета Datadog APM. Этот менеджер приложений представляет собой облачную систему. Он отслеживает использование ресурсов Java-приложения по классам и методам и предлагает пошаговое представление кода Java после выполнения через API и вызовы функций. Служба также отслеживает более широкие показатели производительности приложений и веб-сайтов, такие как доступность и время отклика.

    Профилирование Datadog Java


    Datadog APM Java Profiler
    Начать 14-дневную БЕСПЛАТНУЮ пробную версию

    3. По возможности избегайте рекурсии

    Рекурсия – это базовая стратегия программирования, при которой функция вызывает сама себя для решения проблемы. Однако рекурсия не обязательно зло, это палка о двух концах. У него есть преимущества и практическое применение. Например, рекурсия делает код чище и компактнее, а также сокращает количество тавтологических итераций циклов и функций.

    Поскольку рекурсия снижает сложность и объем кода, она упрощает поддержку приложения Java. К сожалению, эти преимущества достигаются ценой производительности приложений. Рекурсия и вызовы функций дорого обходятся с точки зрения скорости и производительности, потому что они требуют функций извлечения и отправки в стек.

    С другой стороны, более эффективным решением проблемы рекурсии является цикл. Циклические операции могут быть труднее читать и состоят из большего количества символов и исходного кода, чем рекурсия, но они предпочтительнее, когда необходимо максимизировать производительность приложения. Полностью отказаться от рекурсии не всегда целесообразно, но максимальное ее уменьшение поможет повысить производительность приложений Java.

    4. Обновите системное оборудование

    На первый взгляд может показаться, что неэффективное приложение Java должно быть вызвано проблемой программного обеспечения. Хотя это может показаться нелогичным, основной причиной низкой производительности может быть проблема с оборудованием. Независимо от того, запускаете ли вы приложение Java локально или удаленно, системе, в которой выполняется приложение Java, может не хватать системных ресурсов для удовлетворительного выполнения кода.

    Проще всего обновить компонент, который обычно напрямую влияет на производительность программного обеспечения, — это ОЗУ. Увеличивая объем физической памяти на своем компьютере, вы снижаете вероятность того, что системе не хватит места для хранения данных приложений и она будет вынуждена вернуться к использованию жесткого диска в качестве импровизированной оперативной памяти. Этот метод известен как файл подкачки, и хотя он имеет практическое применение, файлы подкачки более нежелательны для высокопроизводительных приложений, чем оперативная память, поскольку процесс чтения и записи на жестком диске значительно медленнее.

    Кроме того, если ваше Java-приложение значительно взаимодействует с жестким диском (например, приложение для резервного копирования или синхронизации данных), обновление жесткого диска может повысить производительность системы. Например, вы можете перейти на диск с более высокими оборотами для более быстрого чтения и записи. Однако обратите внимание, что самыми быстрыми жесткими дисками являются SSD (твердотельные накопители) и они не содержат движущихся частей. Наконец, некоторые системы, но не все, также способны расширять ЦП, хотя его не так просто обновить, как ОЗУ.

    5. Увеличьте пропускную способность LAN и WAN

    Хотя локальное и серверное оборудование является ключевым компонентом приложений Java, включая веб-приложения Java, оно не является единственным потенциальным узким местом. Независимо от того, размещаете ли вы веб-приложения Java локально в локальной сети, в интрасети или удаленно, пропускная способность играет решающую роль в отношении доступности и производительности ваших приложений, особенно в периоды пиковой нагрузки.

    Вообще говоря, полоса пропускания LAN обычно достаточна и недорога, тогда как пропускная способность WAN дорога и дефицитна. Тем не менее, другой трафик локальной сети может вытеснять локальную сеть, к которой подключен сервер, на котором выполняются веб-приложения Java. Эту проблему можно решить одним из двух способов.

    Во-первых, вы можете обновить коммутаторы и локальную сетевую инфраструктуру до решения Gigabit Ethernet или 10Gigabit Ethernet, чтобы уменьшить перегрузку сети. В качестве альтернативы вы можете реализовать политику QoS (Quality of Service), которая отдает приоритет входящему и исходящему трафику с сервера, на котором размещены приложения Java, по сравнению с другими типами трафика.

    Кроме того, в дополнение к увеличению пропускной способности глобальной сети (для чего может потребоваться выбор другого поставщика услуг Интернета) вы можете реализовать балансировку нагрузки, чтобы лучше использовать резервные соединения с поставщиками услуг Интернета. Помните, что низкая производительность приложений Java не обязательно может быть вызвана программными проблемами, а может быть вызвана перегрузкой сети.

    6. Приведите в порядок свою операционную систему

    Для обеспечения максимальной производительности и эффективного использования системных ресурсов операционным системам требуется техническое обслуживание и техническое обслуживание. Неопрятная операционная система имеет тенденцию замедляться и чувствовать себя вялой. Например, у вас может быть множество невидимых процессов, работающих в фоновом режиме, о которых вы даже не подозревали.

    узнать больше  Лучшие предложения Apple в Черную пятницу 2020 (обновление) - айпад мини черная пятница 2020

    Кроме того, процедура установки многих приложений автоматически добавляет новое программное обеспечение в список приложений, запускаемых при запуске. Эти приложения не только замедляют загрузку системы, но и потребляют жизненно важные системные ресурсы, такие как ОЗУ и циклы ЦП, которые в противном случае могли бы использоваться для запуска приложения Java.

    Удаление необходимых и нежелательных процессов и приложений поможет привести в порядок вашу операционную систему, как и запуск программы очистки реестра в системах Windows. Очиститель реестра может смягчить и устранить ошибки DLL и ошибки времени выполнения, удаляя ошибочные записи в реестре и регенерируя структуры индексов.

    Кроме того, еще одна служебная задача, которую следует выполнять с осторожностью, — это дефрагментация жесткого диска. Со временем, поскольку файлы постоянно записываются на жесткий диск и удаляются с него, они могут превратиться в расползающийся хаотичный беспорядок. Инструмент дефрагментации округляет все ваши данные и перезаписывает их в непрерывные блоки, что сокращает время считывания информации с жесткого диска.

    Но имейте в виду: процесс дефрагментации очень требователен к жесткому диску. Если вы будете дефрагментировать его ежедневно, еженедельно или даже ежемесячно, вы резко сократите срок службы вашего жесткого диска. Более разумная и практичная частота — два-три раза в год.

    7. Используйте StringBuilder для повышения эффективности

    Строки являются распространенным типом данных в подавляющем большинстве приложений. Их довольно сложно избежать или игнорировать. К сожалению, конкатенация строк столь же неэффективна, сколь и часта. Может показаться, что лучший способ объединения строк — это операция «+=», но это слишком часто используемая операция, которая крайне неэффективна.

    Проблема в том, что операция «+=» каждый раз выделяет совершенно новую строку, что может создать много избыточных и ненужных строковых данных. Хотя использование этой операции время от времени не приведет к остановке вашего Java-приложения, каждая маленькая операция складывается. Представьте, во сколько раз эта неэффективность может быть увеличена в цикле?

    К счастью, есть более эффективная альтернатива. Объект StringBuilder был разработан как эффективная альтернатива основным операциям конкатенации. Выработайте привычку использовать этот тип данных вместо ленивого сокращения операции «+=», если вы хотите повысить производительность приложений Java.

    8. Используйте кеширование для повышения производительности

    Кэширование — один из наиболее эффективных способов повысить эффективность приложений Java. Основная концепция кэширования заключается в объединении нескольких вызовов и функций в один повторно используемый ресурс. Хотя существует множество форм кэширования, при упоминании слова «кэширование» большинство людей первым делом вспоминают технологию баз данных.

    Кэшировать локально можно не только данные, содержащиеся в базе данных, для экономии полосы пропускания, но и большое количество подключений к базе данных, которые в противном случае замедлили бы работу приложения. Тем не менее, имейте в виду, что кэшированием не следует злоупотреблять. Вы можете интуитивно подумать, что все должно быть кэшировано на случай, если вам понадобится снова использовать его в ближайшем будущем. Однако вам необходимо убедиться, что данных и подключений, которые вы кэшируете, достаточно много, чтобы увидеть прирост производительности.

    9. Отдайте предпочтение стеку, а не куче

    Для повышения производительности приложений Java храните данные в стеке, а не в куче. Почему ты спрашиваешь? Потому что он более эффективно использует память и удаляет данные, которые уже отслужили свое. Стек не только более эффективно использует ресурсы, но и контролирует накладные расходы. Лучший способ отдать предпочтение стеку, а не куче, — избегать создания экземпляров классов-оболочек.

    Как и в случае с рекурсией, не всегда возможно (или даже возможно) отказаться от использования класса-оболочки. Но, как правило, вы должны по умолчанию использовать примитивные типы данных, такие как «int», а не Integer. Количество прироста производительности, который вы можете получить от использования этой тактики, зависит от множества факторов. Тем не менее предпочтение стеку — хороший ориентир, чтобы найти путь к самому компактному и эффективному коду Java.

    На рынке есть инструменты, которые помогут вам успешно обновлять исправления Java. Одним из таких инструментов является SolarWinds Patch Manager.

    Диспетчер исправлений SolarWinds

    Вы можете загрузить полнофункциональную 30-дневную бесплатную пробную версию


    Диспетчер исправлений SolarWinds
    Скачать 30-дневную БЕСПЛАТНУЮ пробную версию

    По теме: Лучшие инструменты управления исправлениями

    Кроме того, вам следует ознакомиться с Инструментом мониторинга Java SolarWinds для серверов приложений с Server & Application Monitor для повышения производительности. Вы можете загрузить полнофункциональную 30-дневную бесплатную пробную версию.


    Инструмент мониторинга Java SolarWinds для серверов приложений с SAM
    Скачать 30-дневную БЕСПЛАТНУЮ пробную версию

    10. Влиять на управление памятью

    Хотя использование стека лучше, чем доступ к динамической памяти, иногда это неизбежно. Большая проблема с производительностью связана с доступностью памяти, поскольку нехватка памяти замедляет работу всех ваших приложений, а приложения Java особенно сильно зависят от памяти.

    JVM заботится об освобождении памяти, удаляя неиспользуемые объекты, которые больше не входят в область действия, с помощью сборщиков мусора. Однако это миф, что сборка мусора — это черный ящик, и повлиять на его поведение никак нельзя. Вы можете настроить размер кучи и изменить алгоритм сборки мусора в куче. Также возможно изменить пропорцию кучи нового поколения к размеру кучи старого поколения. Таким образом, существует множество способов улучшить управление памятью и изменить частоту сбора заброшенного пространства памяти.

    узнать больше  Полное руководство по политике возврата Best Buy - политика возврата лучшей покупки на компьютерах

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

    Есть четыре варианта:

    <ол>

  • Последовательный сборщик мусора — для однопоточной среды. Хорошо для оптимизации ЦП, но плохо для масштабируемости.
  • Параллельный сборщик мусора. Используется по умолчанию и предназначен для многопоточных систем. Как и Serial GC, он замораживает все потоки приложений при сборе. Использует много ресурсов ЦП.
  • Параллельная очистка пометок — выборочное удаление обработчиков памяти, освобождение участков памяти. Заморозит только процессы, которые обращаются к той же области памяти, которая настраивается. Очень интенсивно использует ЦП, но отлично подходит для масштабирования.
  • Сборщик мусора G1 — сегментирует большие области памяти кучи на сегменты. Блокирует только приложения, пытающиеся получить доступ к региону, находящемуся под коллекцией. Хорошо подходит для оптимизации ЦП и масштабируемости, но увеличивает нагрузку на память.
  • Часто задаваемые вопросы о производительности приложений Java

    Как вы решаете проблемы с производительностью в Java?

    Максимальная производительность проблемы с кодом Java связаны не с самим кодом, а с доступностью системных ресурсов. Поэтому ожидайте возникновения проблем после запуска кода, которые не были обнаружены во время разработки. Проверяйте производительность на каждом этапе жизненного цикла системы.

    Как оптимизировать код приложения Java?

    Избегайте слишком большого выделения кучи в своем коде, начав с минимального выделения памяти в коде, а затем добавляя пространство позже, если кажется, что требуется больше. Попытайтесь ужесточить любую процедуру, которая может блокировать ресурсы и оптимизировать выборку данных SQL, изучив оптимизацию SQL — нехватка ресурсов и взаимодействие с другими системами являются основными причинами проблем с производительностью в коде Java.

    Повлияет ли преобразование моего Java-приложения на Node.js на производительность?

    Будьте осторожны при переключении систем, особенно к новым средам программирования, с которыми вы не знакомы. Node.js хвалят за скорость, но он может не обладать всеми возможностями, необходимыми для вашего приложения. Если вас соблазняет Node.js, сначала напишите новое приложение в этой среде, а не пытайтесь портировать существующую программу Java. Если у вас есть проблемы с производительностью Java, это, скорее всего, проблема доступности ресурсов, которая будет продолжаться независимо от того, в какой среде вы написали код.

    Если у вас есть личные истории или анекдоты относительно ускорения Java-приложения, мы приглашаем вас оставить комментарий ниже.


    См. дополнительную информацию по теме замедляет ли java мой компьютер

    Стоит ли учить Java❓ Сколько платят за Java 💲

    alt

    • автор: Изучаем мир ИТ / Олег Шпагин / Программирование
    • Дата отправки: 2020-07-23
    • оценивать: 4 ⭐ ( 9699 обзоры )
    • Сопоставьте результаты поиска: Привет друзья! Стоит ли учить Java? Насколько популярен язык программирования Java? Сколько платят за Java? Ответ: смотрите в видео. 🙂

      ✔ Телеграм – https://t.me/wiseplat 🚀

      ✔ Вступай в группу Вк – https://vk.com/wiseplat1 🚀

      ✔ Подписывайся https://zen.yandex.ru/id/5e9a612424270736479fad54

      ✔ Поддержи проект: https://wiseplat.org/donat

      Конечно, жду ваши идеи по видео в комментариях.
      🔔 Нажимай колокольчик чтобы не пропустить новые видео!

      урокиjava java уроки программирование
      – Уроки от OlegShpagin 👨🏼💻

      Ставь лайк, если тебе понравилось видео 👍
      ►► Подписывайся на канал!

    Как браузер замедляет мой компьютер для сканирования?

    • автор: poweruser.guru
    • оценивать: 5 ⭐ ( 5460 обзоры )
    • Сопоставьте результаты поиска:

    Photoshop замедляет работу вашего компьютера?

    • автор: alloya.ru
    • оценивать: 4 ⭐ ( 1112 обзоры )
    • Сопоставьте результаты поиска: При работе на слабом ПК вы можете столкнуться с тем, что Photoshop работает медленно или тормозит при работе с большими проектами или файлами с несколькими слоями. … РЕШЕНИЕ: В большинстве случаев выделение достаточного количества памяти справится с вашим Photoshop работает очень медленно. Зайдите в «Производительность» и увеличьте объем выделяемой памяти до 70-85%.

    Замедляет ли работу компьютера антивирусник?

    • автор: www.bolshoyvopros.ru
    • оценивать: 3 ⭐ ( 3964 обзоры )
    • Сопоставьте результаты поиска: Мой муж, который очень даже неплохо разбирается в компьютерах, говорит, что вирус может немного замедлять работу компьютера. Но это, ведь, можно и перетерпеть. А то без антивируса комп может стольк

    Проверка Java: где находится на ПК и как узнать версию

    • автор: javaupdate.ru
    • оценивать: 3 ⭐ ( 7370 обзоры )
    • Сопоставьте результаты поиска: Пошаговые инструкции, как узнать, где находится Java, и проверить ее версию на компьютере Windows, Mac, Linux. Проверка включения Джавы в разных браузерах.

    • автор: java.com
    • оценивать: 3 ⭐ ( 5974 обзоры )
    • Сопоставьте результаты поиска:

    Замедляет ли работу компьютера размещение на рабочем столе папок с тяжелым содержимым (от 1 Гб и выше)?

    • автор: qna.habr.com
    • оценивать: 4 ⭐ ( 8461 обзоры )
    • Сопоставьте результаты поиска: На эти вопросы существует множество ответов и все они противоположны друг другу. Итак, чтобы прояснить картину окончательно, спрошу здесь:
      1) Замедляет ли работу компьютера размещение на рабочем столе папок с тяжелым содержимым (от 1 Гб и выше)?
      2) Замедляет ли работу компьютера размещение на рабочем столе большого количества ярлыков?
      Интересует Windows 7 (32 bit)

    Смотрите больше статей в категории: Советы по работе с компьютером