Повышаем производительность в Java
Пустая коллекция вместо Null
Если программа, которую вы пишете, может вернуть коллекцию, не содержащую никаких значений, следует удостовериться, что возвращается пустая коллекция, а не Null — это позволит сэкономить вам время на разнообразные проверки, а также избавит от многих ошибок.
Создаем объекты лишь тогда, когда нужно
Пожалуй, создание объектов является одной из наиболее затратных операций в Java. Хорошая практика — создавать их лишь тогда, когда они действительно необходимы.
Deadlocks
Взаимная блокировка потоков (дэдлок) бывает по множеству причин, а полностью уберечься от них в Java 8 весьма сложно. Зачастую, такое происходит, если один синхронизируемый объект ожидает ресурсов, а они заблокированы другим синхронизированным объектом.
Рассмотрим пример тупика потока:
Результат программы будет следующим:
Если изменить порядок вызова потоков, то взаимоблокировок можно избежать:
Смотрим вывод:
Резервирование памяти
Ряд Java-приложений обладает повышенной ресурсоемкостью, что может приводить к замедленной работе. Чтобы повысить производительность, можно выделить на Java-машине больше оперативной памяти.
Здесь: • Xms — минимальный пул выделения памяти; • Xmx — максимальный пул; • XX: PermSize — начальный размер, который выделится при запуске JVM; • XX: MaxPermSize — максимальный размер, который выделится при запуске JVM.
По материалам статьи «Top 25 Java Tricks, Tips, and Best Practices».