Считаете, сколько раз поток был прерван? - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь определить влияние переключения контекста на мой поток Java. Поэтому я должен был бы знать сначала "сколько раз это было вытеснено?" и, во-вторых, если возможно, «как долго мой поток был приостановлен из-за выполнения?». Я бы очень сомневался, что это можно сделать с Java, но эй! самое интересное - делать невозможное, верно? :) Даже если бы мне пришлось перекомпилировать виртуальную машину или использовать какой-либо инструмент LINUX или взломать, я был бы счастлив. Итак, теперь, когда мы знаем, что это невозможно, давайте сделаем это. :)

РЕДАКТИРОВАТЬ: Давай люди. Другой вопрос был приоритетным. Я думаю, вы просто наслаждаетесь легкими и скучными вопросами. Вопрос ясен и действителен.

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

Если вы можете идентифицировать TID Linux (идентификатор потока) для интересующего вас потока Java (при условии, что ваша JVM отображает потоки Java на потоки Linux), то псевдофайл /proc/<tid>/status содержит много статистики, включая voluntary_ctxt_switches и nonvoluntary_ctxt_switches.

2 голосов
/ 29 марта 2012

Очевидно, что он не делает все, что вы хотите, но вы можете найти ThreadMXBean доступным в java.lang.management полезном.

...