В предыдущих заметках мы писали о самой платформе Java, ее особенностях, а также о счетчиках памяти Java. В этой заметке мы расскажем о счетчиках потоков и классов Java.
Счетчики потоков:
- Live threads (активные потоки) – Показывает общее количество активных потоков демонов и всех не-демон потоков.
- Peak threads (пик потоков) – Показывает наибольшее количество активных потоков с момента запуска JVM.
- Daemon threads (потоки демонов) – Показывает текущее количество активных потоков демонов.
- Total started threads (общее количество запущенных потоков выполнения) – Показывает общее количество запущенных потоков с момента запуска JVM (включая потоки демонов, не-демонов и завершенные).
Счетчики классов:
- Current classes loaded (текущее число загруженных классов) – Показывает количество классов, загруженных в память на данный момент.
- Total classes loaded (общее число загруженных классов) – Общее количество классов, загруженных в память с момента запуска JVM, включая те, что позже были выгружены.
- Total classes unloaded (общее число выгруженных классов) – Суммарное количество классов, выгруженных из памяти с момента запуска JVM.
Счётчики потоков
Слово «поток» используем в значении «потоки выполнения в программе». JVM допускает наличие в приложении нескольких потоков, выполняющихся одновременно. У каждого потока есть приоритет. При выполнении потоки с более высоким приоритетом имеют преимущество над потоками с более низким. Каждый поток может быть отмечен (также может быть не отмечен) как демон. Когда код, запущенный в каком-то потоке, создаёт новый, «дочерний» поток имеет свой приоритет, по умолчанию соответствующий приоритету создающего потока, и он является демоном, если (и только если!) создающий таковым являлся.
При запуске JVM обычно начинает выполняться одиночный поток, не-демон (который, как правило, вызывает метод main определённого класса). JVM продолжает выполнять потоки, пока не произойдёт одно из событий:
- Вызван метод выхода класса Runtime, и менеджер по безопасности позволил совершить выход;
- Все потоки, которые не являются демонами, «мертвы»: либо возвращены с метода вызова на метод запуска, либо дезактивированы генерацией исключения, выходящего за предел метода запуска.
На этом наш рассказ о мониторинге Java завершен. И разработчикам, и тем кто обслуживает бизнес приложения, следует пользоваться возможностями платформы либо продуктами мониторинга, которые умеют использовать вышеописанные возможности. На сегодня все, а в следующей заметке расскажем о мониторинге платформы .Net.
Счетчики классов
Особо рассказывать нечего, все сказано в описании самих счетчиков. Общие счетчики показывают общую информацию, относящуюся к запущенной на машине JVM, счетчики классов – статистику по классам.