§4 Создавайте без экземплярные классы при помощи private конструктора
Попытка создать без экземплярный класс как abstract – не работает. Лучше так:
§5 Избегайте создания ненужных объектов
Не делайте так: Лучше так:
Пример для НЕ подражания:
Хороший пример:
Предпочитайте примитивы вместо boxed примитивов, и следите за неявным autoboxing.
§6 Уничтожайте устаревшие ссылки
Исправленная версия Тем не менее присвоение null ссылкам должно быть исключением, а не правилом
Другие места утечек памяти: –Когда класс оперирует с выделенной им самим памятью – это источник потенциальных проблем –Кэши –Listners and callbacks
§7 Избегайте finalizers
Finalizers непредсказуемы, часто опасны, и по большому счеты – не нужны Никогда не делайте ничего критически важного в finalizer Будьте готовы к медленной работе: –Создание и удаление простого объекта, около 5.6ns –При добавлении finalizer, оно становится 2400ns (в 430 раз медленнее) Предоставляйте внешний метод для уничтожения объекта
Метод для уничтожения обычно используется вместе с try - finally
Finalizer может использоваться для оповещения о том, что использованные ресурсы не освобождены (в дополнение к safety net) Полезно делать следующее Finalizer chaining: