Повышаем производительность в Java

Повышаем производительность в Java

t.me/android_its

Пустая коллекция вместо Null

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

Screenshot_1-1801-89d853.png


Создаем объекты лишь тогда, когда нужно

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

Screenshot_2-1801-57dc65.png


Deadlocks

Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно. Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.

Рассмотрим пример тупика потока:

Screenshot_3-1801-45503e.png


Результат программы будет следующим:

Screenshot_4-1801-3e11a6.png


Если изменить порядок вызова потоков, то взаимоблокировок можно избежать:

Screenshot_5-1801-48da36.png


Смотрим вывод:

Screenshot_6-1801-6d6bd0.png


Резервирование памяти

Ряд Java-приложений обладает повышенной ресурсоемкостью, что может приводить к замедленной работе. Чтобы повысить производительность, можно выделить на Java-машине больше оперативной памяти.

Screenshot_7.1-1801-3b3563.png


Здесь:

• Xms — минимальный пул выделения памяти;

• Xmx — максимальный пул;

• XX: PermSize — начальный размер, который выделится при запуске JVM;

• XX: MaxPermSize — максимальный размер, который выделится при запуске JVM.


Report Page