Я только что обновил старый источник Java, который был запущен на Sun Java 1.4.2 VM для Sun Java (JRE) 6 VM , Более или менее единственное, что мне пришлось изменить, это добавить явные типы данных для некоторых абстрактных объектов (Hashmap's, Vector и т. Д.). Сам код довольно насыщен памяти, используя до 1G памяти кучи (используя -Xmx1024m в качестве параметра для запуска виртуальной машины).Обновление с Java 1.4.2 до Java 6 (обе виртуальные машины Sun) приводит к более низкой производительности
Поскольку я много читал о лучшей производительности на новых виртуальных машинах Java, это была одна из причин, по которым я сделал это обновление.
- Может ли кто-нибудь подумать о причине, по которой производительность в моем случае еще хуже (просто, конечно, так как вы не можете взглянуть на код)?
- Есть ли у кого-нибудь совет для гуру, не являющегося Java, что искать, если я хочу оптимизировать существующий код (скорость)? Любые подсказки, рекомендуемые документы, инструменты?
Спасибо.
Я сомневаюсь, что это действительно влияет на что-либо, но с использованием вектора, когда вам не нужна его встроенная синхронизация/предотвращение потоков может быть чрезмерным –
Вы пытались запустить исходный неподдающийся 1.4.2 скомпилированный код на Java 6? Вы можете выбрать конкретный сборщик мусора. Также возможно использовать -d32, чтобы убедиться, что вы не используете слишком много памяти для указателей. –