2010-03-16 3 views
4

Я создаю глобальную обработку исключений, которая собирает некоторую информацию перед закрытием в некоторых случаях. Одна из этих данных - текущая дампа потока. я сделать это с помощью следующего кода:Как написать анализируемый формат дампа нитей

ManagementFactory.getThreadMXBean().dumpAllThreads(true, true); 

Проблема заключается в том, чтобы записать информацию в анализируемый формат для ТДА. Существует ли «простой» способ форматирования информации вместо того, чтобы писать формат самостоятельно?

EDIT: Я хотел бы иметь полный дамп потока, чтобы найти проблемные потоки. Вышеупомянутый метод предоставляет массив объектов ThreadInfo-Objects, поэтому у меня есть данные. Моя проблема заключается в том, что записанный вывод не в формате, который TDA распознает как дамп потока.

+0

Какой формат хотел бы иметь? И что предлагает ThreadMXBean? – Riduidel

+1

Что это за TDA, о котором вы говорите? –

+0

Я думаю, что это так, верно? https://tda.dev.java.net/ –

ответ

0

Если вы находитесь на окнах, то bwithers имеет described способ передачи JVM в дамп потока.

Существует также pure java approach, но я не уверен, что выход находится в стандартном формате.

3

Если вы не хотите, чтобы скопировать код TDA (Это LGPL, в конце концов), вы можете также использовать Attach API, чтобы получить данных в стандартном формате. Насколько мне известно, единственным встроенным кодом JVM для создания дампа является собственный код агента Attach.

String selfName = ManagementFactory.getRuntimeMXBean().getName(); 
final int selfPid = Integer.valueOf(selfName.substring(0, selfName.indexOf('@')));     

HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(Integer.toString(selfPid)); 

InputStream sDump = vm.remoteDataDump(new Object[]{"-l"}); // lowercase L for lock dump 

Дамп данных вернет дамп в поток символьных данных.

+0

Ницца. Тем не менее, для устранения классов com.sun требуется снижение ограничений доступа в Eclipse. –

+0

Просто добавьте ... HotSpotVirtualMachine.class доступен только в версии 1.6 или новее в инструментах JDK. Jar – pavan

 Смежные вопросы

  • Нет связанных вопросов^_^