Thread History View

## Thread History View |

| The thread history view shows the list of all threads in the JVM in the order they were started. On the left hand side of the view, the names of the threads appear as a fixed column, the rest of the view is filled with a scrollable measuring tool which shows time on its horizontal axis. The origin of the time axis coincides with the starting time of the first thread in the JVM. Each alive thread is shown as a colored line which starts when the thread is started and ends when the thread dies. The color indicates a certain thread status and is one of green Green color means that the thread is runnable and eligible for receiving CPU time by the scheduler. This does not mean that the thread has in fact consumed CPU time, only that the thread was ready to run and was not blocking or sleeping. How much CPU time a thread is allotted, depends on various other factors such as general system load, the thread's priority and the scheduling algorithm. orange Orange color means that the thread is waiting. The thread is sleeping and will be woken up either by a timer or by another thread. red Red color means that the thread is blocking. The thread has is trying to enter a `synchronized` code section or a `synchronized` method whose monitor is currently held by another thread. blue Light blue color means that the thread is in Net I/O. The thread is waiting for a `network operation` of the java library to complete. This thread state occurs if a thread is listening for socket connections or if it is waiting to read or write data to a socket. Note: If you are color-blind, you can edit `bin/jprofiler.vmoptions` and set `-Djprofiler.highContrastMode=true`. The above colors will then have an optimal contrast.

| At the top of the view, there is a thread filter selector. You can use it to filter the displayed threads by liveness status From the combo box you can choose if you wish to display Both alive and dead threads Alive threads only Dead threads only name In the text box you can enter the full name of a thread or only a part of it. Only threads whose names begin with this fragment are displayed. You can also use wildcards ("*" and "?") to select groups of threads. Please note that if you use wildcards, you have to manually append a trailing "*" if desired. You can display the union of multiple filters at the same time by separating multiple filter expressions with commas, e.g. `AWT-, MyThreadGroup-*-Daemon`. The selection is performed once you press the enter key. The combo box contains all entries performed during the current session. The [Reset filters] button can be used to remove all filters.

| When you move the mouse across the thread history view, the time at the position of the mouse cursor will be shown in JProfiler's status bar. If you have recorded monitor events, a tool tip with the stack trace and links into the locking history graph and the monitor history view will be displayed. The link to the locking history graph points to the time that the event has started, the linked entry in the monitor history view shows the entire event. If the event has not yet completed, the link into the monitor history view is not available.

| When you right-click a thread name on the left side of the view, a context menu will be displayed that allows you to jump to the Call tree view or the Hot spots view and display the single selected thread there.

| The thread history view has two different display modes. The display mode is a persistent view setting and is also accessible through the thread history view settings dialog. fixed time scale If you are currently in the "scale to fit window" mode, you can switch to this mode by choosing the scale mode selector button in the lower right corner of the view. choosing View->Scale to fit window from JProfiler's main menu. choosing Scale to fit window from the context menu. checking `Scale to fit window` in the thread history view settings dialog. In this mode, the time scale on the time axis does not change with time and the time axis can be scrolled with the scrollbar on the bottom which appears if the total time span does not fit into the current view size. If the current time is visible, the view is in auto-follow mode where the time axis is scrolled automatically when new data arrives to always show the current time. If you are not in auto-follow mode, because you scrolled back in time, just move the scrollbar to the right end of the time scale to re-enable auto-following. You can adjust the scale of the time axis by zooming in or out. Zooming in increases the level of detail while zooming out decreases it. You change the zoom level by using the zoom controls in the lower right corner of the view. choosing View->Zoom in and View->Zoom out from JProfiler's main menu. choosing Zoom in and Zoom out from the context menu. scale to fit window If you are currently in the "fixed time scale" mode, you can switch to this mode by choosing the scale mode selector button in the lower right corner of the view. choosing View->Continue at fixed scale from JProfiler's main menu. choosing Continue at fixed scale from the context menu. unchecking `Scale to fit window` in the thread history view settings dialog. The time scale on the time axis is adjusted continuously in order to show the total time span in the current size of the view. Zooming is not possible in this mode.

| Grid lines and background of the thread history view can be configured in the thread history view settings dialog.