Оптимизация программ на Java
Производительность программ на Java™ в AIX моно улучшить разными способами.
- Для того чтобы при выполнении большого числа операций со строками избежать создания ненужных объектов, после которых нужно будет освобождать память, вместо конкатенации строк можно использовать функцию StringBuffer.
- Постарайтесь максимально сократить число операций вывода данных на консоль Java, так как для этого требуется выполнить некоторые действия над строками, отформатировать текст и записать данные.
- По возможности создавайте переменные простых типов, так как для работы с ними требуется меньше ресурсов системы.
- Заносите часто используемые объекты в кэш; это позволит уменьшить нагрузку на функцию сбора мусора и избежать многократного создания этих объектов.
- Объединяйте в группы внутренние операции для уменьшения числа вызовов интерфейса JNI Java.
- Для снижения числа процессов в JVM и операционной системе не применяйте синхронизированные методы, когда задачу можно решить другими способами.
- Вызывайте функцию сбора мусора только при необходимости. Запускать эту функцию рекомендуется только во время простоя или низкой загруженности системы.
- Используйте тип int вместо long всегда, когда это возможно, потому что 32-разрядные операции выполняются быстрее, чем 64-разрядные.
- Объявляйте методы с ключевым словом final всегда, когда это возможно. В JVM такие методы обрабатываются быстрее.
- Для снижения числа операций по инициализации переменных создавайте константы с ключевым словом static final.
- Постарайтесь сократить число ссылок "cast" и "instanceof", поскольку соответствующие ссылки в Java преобразуются во время выполнения.
- Старайтесь использовать массивы вместо векторов.
- Добавляйте и удаляйте элементы из конца вектора.
- Избегайте операций выделения памяти под объекты внутри циклов.
- Пользуйтесь буферизованным вводом-выводом и выберите оптимальный размер буфера.
- Пользуйтесь пулами соединений и предварительной подготовкой операторов при работе с базами данных.
- Пользуйтесь пулами соединений с базой данных и повторно используйте соединения вместо того, чтобы всякий раз открывать и закрывать соединения.
- Применяйте максимальное возможное время жизни нити и минимизируйте количество операций по созданию и уничтожению нитей.
- Минимизируйте конкуренцию за общие ресурсы.
- Минимизируйте количество операций создания объектов, используемых в течение непродолжительного времени.
- Старайтесь как можно реже вызывать удаленные методы.
- Пользуйтесь функциями callback для того, чтобы избежать блокирования обращений к удаленным методам.
- Не создавайте объекты, которые будут применяться только для обращения к методам.
- По возможности не пользуйтесь синхронизированными методами внутри циклов.
- Храните строковые и символьные данные в базе данных в формате Unicode.
- Выберите оптимальный порядок библиотек в переменной CLASSPATH.