[Unix] [Java] кто-нибудь оптимизировал крупное приложение ? как искать места, где больше всего теряется ресурсов системы ?29.05.03 22:20 Автор: tdes <jin> Статус: Member
[Unix] [Java] кто-нибудь оптимизировал крупное приложение ? как искать места, где больше всего теряется ресурсов системы ?30.05.03 01:16 Автор: tatar_0x4e Статус: Member
Для оптимизации по памяти я использовал методы Runtime.freeMemory(), Runtime.totalMemory(), собирал статистику, анализировал, графики строил, GC тюнил :) Статистику использования памяти можно также получить запуская VM с ключиком -verbose:gc...Кроме того имеется много профайлеров - те же JProbe, Borland OptimizeIt. Пока по моим наблюдениям самые большие проблемы у Java c памятью - жрет она ее не просто помногу, а ОЧЕНЬ помногу, - так что оптимизацией по скорости заниматься не довелось :)
[Unix] [Java] кто-нибудь оптимизировал крупное приложение ? как искать места, где больше всего теряется ресурсов системы ?30.05.03 02:16 Автор: tdes <jin> Статус: Member
У нас сервер, который, если повезет :)), будет обслуживать много запросов одновременно.
А есть ли какие-то бесплатные тулзы ? вот например нашёл HPROF ot SUN ...
[Unix] [Java] кто-нибудь оптимизировал крупное приложение ? как искать места, где больше всего теряется ресурсов системы ?30.05.03 12:19 Автор: tatar_0x4e Статус: Member
> А есть ли какие-то бесплатные тулзы ? вот например нашёл > HPROF ot SUN ... А я даже этого не нашел, хотя и искал долго :)
По поводу сервера. В моем случае замечена интересная особенность - при правильно подобранных параметрах JVM, потребление памяти снижается где-то в три раза. Если с дефолтными настройками это чудо жрет порядка 150 MB сразу, а потом еще, и еще, и отдавать не собирается, то с incremental garbage collector и индивидуально подобранными опциями -Xmx, -XX:MaxPermSize, -XX:MaxHeapFreeRatio, -XX:NewRatio, не меняя ни строчки в исходном коде, получим порядка 50 MB сразу и гораздо меньшую скорость роста. Впрочем, ожидать, что оно отдаст ту память, которую уже скушало, не приходится:) Лучшая комбинация сборщиков мусора у меня получилась: -XX:+UseParallelGC, -Xincgc. Так что, прежде чем править код, имеет смысл поиграться с ключиками java VM и договориться с GC. Выигрыш, скорее всего, будет гораздо больше. Оптимизируя код в соответствии с рекомендациями Sun получилось выцарапать у него всего ~2 MB, да и то большой кровью.