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

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

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

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

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

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

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

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