org.bootchart.common

## Class ProcessTree

- java.lang.Object
- - org.bootchart.common.ProcessTree

-     public class ProcessTree
      extends java.lang.Object

  ProcessTree encapsulates a process tree. The tree is built from log files retrieved during the boot process. When building the process tree, it is pruned and merged in order to be able to visualize it in a comprehensible manner.

  The following pruning techniques are used:

  - idle processes that keep running during the last process sample (which is a heuristic for a background processes) are removed,
  - short-lived processes (i.e. processes that only live for the duration of two samples or less) are removed,
  - the processes used by the boot logger are removed,
  - expoders (i.e. processes that are known to spawn huge meaningless process subtrees) have their subtrees merged together,
  - siblings (i.e. processes with the same command line living concurrently -- thread heuristic) are merged together,
  - process runs (unary trees with processes sharing the command line) are merged together.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `long` | `duration` The duration of the process tree (measured from the start time of the first process to the end time of the last process).
    `java.util.Date` | `endTime`
    `int` | `numProc` The number of all processes in the tree.
    `java.util.List` | `processTree` The `Process` tree.
    `int` | `samplePeriod` Statistics sampling period.
    `java.util.Date` | `startTime` The start time of the graph

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProcessTree(PsStats psStats, java.lang.String monitoredApp, boolean prune)` Creates a new process tree from the specified list of `Process` instances.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### startTime

          public java.util.Date startTime

      The start time of the graph

    - #### endTime

          public java.util.Date endTime

    - #### duration

          public long duration

      The duration of the process tree (measured from the start time of the first process to the end time of the last process). This is also the total boot time.

    - #### samplePeriod

          public int samplePeriod

      Statistics sampling period.

    - #### numProc

          public int numProc

      The number of all processes in the tree.

    - #### processTree

          public java.util.List processTree

      The `Process` tree.

  - ### Constructor Detail

    - #### ProcessTree

          public ProcessTree(PsStats psStats,
                             java.lang.String monitoredApp,
                             boolean prune)

      Creates a new process tree from the specified list of `Process` instances.
      Parameters:
        `psStats` - process statistics
        `monitoredApp` - monitored application (or `null` if the boot process is monitored)
        `prune` - whether to prune the tree by removing sleepy and short-living processes and merging threads

  - ### Method Detail

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`