|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
Профайлер для исполняемого jar файла09.06.2017, 21:59. Показов 2855. Ответов 15
Метки нет (Все метки)
Здравствуйте. Посоветуйте пожалуйста профайлер для готового сервер приложения .jar (использующего технологию Nio) , которое спустя 2 часа после его запуска (или при большом количестве подключаемых клиентов) начинает тормозить и у клиентов возникают лаги. Цель найти то место в коде, где чаще всего начинают возникать задержки. Дебаг вряд ли сможет подойти, потому как он останавливает выполнение программы. Можно ли с помощью профайлера определить переменные/методы в которых чаще всего возникает задержка, (сижу в eclipse)?
0
|
|
| 09.06.2017, 21:59 | |
|
Ответы с готовыми решениями:
15
Создание исполняемого jar файла Имя исполняемого файла для Android Программа для сжатия исполняемого файла |
|
|
|
| 12.06.2017, 13:03 | |
|
Проще всего, запустить Flight Recorder, в тот момент, когда проблема начинает воспроизводиться.
Записать, несколько минут, и потом посмотреть в Java Mission Control jmc встроен в Oracle JDK, ничего дополнительного ставить не нужно. https://docs.oracle.com/javaco... m#JFRUH164 Также полезно включить GC логи, и посмотреть, не случается ли постоянный Full GC во время повторения проблемы. Если случается - нужно снять Heap Dump (можно с помощью jcmd) и потом уже смотреть, кто сожрал память.
1
|
|
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
| 12.06.2017, 16:52 [ТС] | |
|
Спасибо буду разбираться. Просто в eclipseуже есть profile as, но он не запускается (скрин 1,2), а при попытке создать конфигурацию ругается на то, что не может найти GWT который я вообще не использую, может он для чего то другого создан? И по диспетчеру задач у меня растет загрузка процессора ,озу почти не меняется, как вы думаете могут ли объекты кучи забивать кеш процессора и тормозить его (HashMap способен на такое)?
0
|
|
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|
| 12.06.2017, 17:12 [ТС] | |
|
вот скрины
0
|
|
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||||||
| 16.06.2017, 17:39 [ТС] | ||||||
|
Второй день занимаюсь этим вопросом, но ни как не удается в jmc найти указатель на строку в коде, нашел только hot metods (скрин 1) а в каком месте кода он вызывается не ясно,это возможно в Flight Recorder или в Memory Analyzer? К стати дамп кучи можно получить и в jconsole (скрин 2), получить из него дамп и и открыть в Memory Analyzer. Решил вспомнить основы и как пишет Экель "... в Java существует сборщик мусора (garbage collector) ,который наблюдает за объектами, созданными оператором new, и определяет, на какие из них больше нет ссылок. Тогда он освобождает память от этих объектов..." , а если объект создан внутри метода не через new а получен из (например) из List или HashMap , то тогда он разые не попадает в кучу и не удаляется?
"3.Куча. Пул памяти общего назначения (находится так же в RAM)" ,это точно так, куча не попадают в кеш процессора?
0
|
||||||
|
|
||
| 16.06.2017, 23:56 | ||
GC всё знает.Добавлено через 2 минуты Вы где-нибудь вызываете pendingDatan.remove? Или вы туда только добавляете объекты?
0
|
||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||||||||
| 17.06.2017, 15:03 [ТС] | ||||||||
"The in memory agent can not be started on this JVM, since attach is not supported! If you're trying to connect to a 32-bit JVM with a 64-bit Mission Control or vice versa, start the management agent manually by using the JVM flag -Dcom.sun.management.jmxremote for your JVM prior to trying to connect to it. " jconcole то же незапускается, походу сервер 64 битный и тут остается или останавливать сервер и переустанавливать на него 64 битный jdk , или запустить какой то флаг Dcom.sun.management.jmxremote. Вы случайно с этим не сталкивались, можно ли запустить этот флаг не из командной строки, так как я из командной строки запустил сервер-прогу jar? Добавлено через 3 минуты Вот скрин
0
|
||||||||
|
|
||||||||||||
| 17.06.2017, 16:07 | ||||||||||||
|
Можно попробовать включить этот флажок с помощью jcmd когда процесс уже запущен
Так что с GC? Вы включили логи? Какой GC используется? Дефолтный? Какой размер Heap-а выставлен? (опция -Xmx) Во время лага, запускается GC или тормозит именно программа?
0
|
||||||||||||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||
| 18.06.2017, 08:41 [ТС] | ||
|
0
|
||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|||||||||||
| 18.06.2017, 15:38 [ТС] | |||||||||||
|
Арендовал новый (идентичный старому) vps (windows 2012) и поставил на него все последнее 64 битное (jdk-8u131-windows-x64 и eclipse-inst-win64-Eclipse Java Neon), jmc запускает и записывает FR но не может открыть полученный файл - пишет
0
|
|||||||||||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||||||
| 18.06.2017, 16:28 [ТС] | ||||||
|
Пробовал у себя на windows7 32бита ,пишет что не может ивенты получить из jfr
0
|
||||||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||||||
| 18.06.2017, 17:07 [ТС] | ||||||
|
Решился я на абсурдный шаг - и он сработал:
0
|
||||||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
||||||
| 20.06.2017, 09:24 [ТС] | ||||||
|
Вот общая картина FR за 10 минут (скрин1), по графику used heap кучи нет роста нижнего уровня (скрин 2 ), единственное что изменилось со вчерашнего дня (12 часов назад примерно) - commiteted heap вырос с 80 М до 190 М (вчерашний день -скрин 3), может ли этот рост способствовать понижению производительности?
Во вкладке code самый горячий метод sun.nio.ch.SocketChannelImpl.read(ByteBu ffer) (скрин 4), так же он отмечен в ивентах (скрин 5). Не понятно что значит горячие методы - те которые кучу забивают и садят производительность или просто чаще всего вызываются? Вот мой метод read
0
|
||||||
|
7 / 7 / 4
Регистрация: 07.07.2011
Сообщений: 583
|
|||||||||||
| 23.06.2017, 09:17 [ТС] | |||||||||||
|
Я нашел одну из утечек памяти, оказалось что сервер не всегда может увидеть что клиент вышел из приложения, то есть
чтение из канала в битбуфер не всегда может поймать -1
0
|
|||||||||||
|
|
||
| 23.06.2017, 11:40 | ||
|
Добавлено через 52 секунды Scanner - не самая быстрая штука. Внутри него используются регулярки. Если нужно его ускорить, лучше парсить руками.
0
|
||
| 23.06.2017, 11:40 | |
|
Помогаю со студенческими работами здесь
16
Ищу программу для анализа исполняемого файла Как назначить иконку для исполняемого файла программы Замена параметра запуска для исполняемого файла в ярлыке Как создать exe контейнер для исполняемого файла с ограничениями Написать код исполняемого файла для очистки экрана и вывода списка файлов / каталогов текущего каталога Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|