Поскольку вы не включили оптимизацию.
Без оптимизации компилятор не пытается свести к минимуму объем пространства или время, в котором он нуждается, для чего-либо в сгенерированном коде - он просто генерирует код в
Добавьте -O2
(или даже просто -O1
) или -Os
, если вы хотите, чтобы компилятор создавал достойный код.
В консоли нажмите V, а не T:
t: dump thread list
v: dump thread stack
Это работает под JDK6. Не знайте о других.
Альтернатива, под JDK5 (и возможно ранее) можно отправить полное отслеживание стека всех потоков к стандарту:
В соответствии с Windows: введите ctrl-break в консоли Java.
Под Unix: kill -3 <java_process_id>
(например, уничтожьте-3 5555). Это НЕ уничтожит Ваше приложение.
Еще одна вещь: Как другие говорят, можно получить стеки программно через Thread
класс, но не упускает Thread.getAllStackTraces()
до JDK6 как существует утечка памяти.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6434648
С уважением,
scotty
Недавние JDKs (печально не JREs) включают инструменты как jstack, который делает такие вещи. JVMs от версии 5 включают расширения JMX для получения дампов потока, статистики памяти, и многое другое. Все JAVA-приложения, включая сеть запускают приложения, имеют эту функциональность в наличии.
Необходимо было бы или установить JDK или записать клиенту JMX, который делает то же самое. Смотрите на http://java.sun.com/javase/6/docs/technotes/guides/management/ для получения большей информации.
С тех пор 1.5 можно использовать Thread.getAllStackTraces()
получить a Map
выполнить итерации.
Идеальный вывод был бы то, что произведенный из Ctrl-\(или Ctrl-Break или подобный), но там, кажется, не зарегистрированный способ произвести это. Если Вы готовы ограничить себя JVM солнца (или использовать отражение я предполагаю), у Вас могло быть рыть вокруг sun.*
пакеты и видят если что-либо интересные шоу.
Начиная с Java 5 у Вас есть getStackTrace () метод класса Потока. Для предыдущих версий можно сделать:
Thread.currentThread().dumpStack();
Это распечатает отслеживание стека к System.out
Попробовать
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
Затем можно выполнить итерации по набору для показа вершины x элементы стека, которыми Вы интересуетесь.