# controller-api

Content of the MCP resource `jprofiler://api/controller` of the JProfiler MCP server, see the [tool and resource reference](../tools.md) for the full list of tools and resources.

# Controller API

API reference of `com.jprofiler.api.controller`: the `Controller` class lets the profiled application
drive profiling itself - start and stop recordings, save snapshots, take heap dumps, mark the heap and
add bookmarks from application code. All methods are no-ops without overhead when the JProfiler agent is
not present, so the calls can stay in the code permanently.

This is complementary to recording driven by this server: `recordingConfig` of prepare_profiling/attach
and its triggers cover recording on a schedule or on agent-observed events. The Controller API is for
conditions only the application can see - for example saving a snapshot when a rare error occurs, or
bracketing a benchmark with startCPURecording/stopCPURecording and saveSnapshot. The saved snapshots are
then analyzed with load_snapshot.

Build setup: Maven artifact `com.jprofiler:jprofiler-controller:<version>` (`provided` scope suffices,
the agent wires the calls) or `api/jprofiler-controller.jar` of a JProfiler installation. The
`jpcontroller` command line executable and the JProfiler MBean expose the same functionality for
interactive and remote use without code changes.

## Types

Flat alphabetical index of every type in the API. Use this when you know the qualified name and want to skip package navigation.

| Qualified name | Kind | File |
|---|---|---|
| `com.jprofiler.api.controller.Controller` | class | [Controller](#com-jprofiler-api-controller-controller) |
| `com.jprofiler.api.controller.HeapDumpOptions` | class | [HeapDumpOptions](#com-jprofiler-api-controller-heapdumpoptions) |
| `com.jprofiler.api.controller.ProbeObjectType` | enum | [ProbeObjectType](#com-jprofiler-api-controller-probeobjecttype) |
| `com.jprofiler.api.controller.ProbeRecordingOptions` | class | [ProbeRecordingOptions](#com-jprofiler-api-controller-proberecordingoptions) |
| `com.jprofiler.api.controller.ProbeValueType` | enum | [ProbeValueType](#com-jprofiler-api-controller-probevaluetype) |
| `com.jprofiler.api.controller.TrackingOptions` | class | [TrackingOptions](#com-jprofiler-api-controller-trackingoptions) |

## <a id="package-com-jprofiler-api-controller"></a>Package `com.jprofiler.api.controller`

Contains the controller class for programmatically controlling the recording of profiling data.

The [`Controller`](#com-jprofiler-api-controller-controller) class contains further information.

**License**

Classes in this package and its sub-packages are licensed under the Apache License, version 2.0.

### <a id="com-jprofiler-api-controller-controller"></a>Controller

Import: `import com.jprofiler.api.controller.Controller;`

```java
public class Controller
```

Use this class to influence the run time behaviour of JProfiler.

**Overhead**

When executing your application without JProfiler, all calls into this class will quietly do nothing without any
overhead, because the implementations of the methods are empty. When the JProfiler agent is present, these methods will
be instrumented and wired up with the agent.

**Interactive use**

If you would like to access the functionality in this class from the command line, use the
`jpcontroller` command line executable that attaches to the JProfiler MBean which is registered
for every profiled application. For more information, invoke `jpcontroller -help`.

**Offline profiling**

While you can use the controller during interactive profiling sessions, it is most useful for **offline profiling**.
"Offline" refers to the fact that the JProfiler GUI does not have to be connected to the profiled process while
profiling data is being recorded and snapshots are saved.

Please read the "Offline profiling" chapter in the documentation (directory `$JPROFILER_HOME/doc`) for an
overview on how to use the Controller API and consult the javadoc for [`Controller`](#com-jprofiler-api-controller-controller).

The `$JPROFILER_HOME/api/samples/offline` example project shows how to perform offline profiling.
Open the gradle build file `build.gradle` in an editor for instructions on how to run it.

**JAR file and dependency**

All classes in this package are contained in `$JPROFILER_HOME/api/jprofiler-controller.jar`.
The controller API is also available as a dependency. In the snippets below, "VERSION"
should be replaced with the corresponding JProfiler version.

**Maven**

```
<dependency>
  <groupId>com.jprofiler</groupId>
  <artifactId>jprofiler-controller</artifactId>
  <version>VERSION</version>
</dependency>
```

**Gradle**

```
dependencies {
  classpath group: 'com.jprofiler', name: 'jprofiler-controller', version: 'VERSION'
}
```

**Shading**

If this API is relocated, set `-Djprofiler.controllerPackage` to the relocated package name.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`startCPURecording(boolean)`](#com-jprofiler-api-controller-controller-startcpurecording-boolean) | `void` | Starts recording CPU data. |
| [`startCPURecording(boolean, TrackingOptions)`](#com-jprofiler-api-controller-controller-startcpurecording-boolean-trackingoptions) | `void` | Starts recording CPU data. |
| [`stopCPURecording()`](#com-jprofiler-api-controller-controller-stopcpurecording) | `void` | Stops CPU recording. |
| [`startProbeRecording(String, boolean)`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) | `void` | Start recording data for a selected probe. |
| [`startProbeRecording(String, ProbeRecordingOptions)`](#com-jprofiler-api-controller-controller-startproberecording-string-proberecordingoptions) | `void` | Start recording data for a selected probe. |
| [`stopProbeRecording(String)`](#com-jprofiler-api-controller-controller-stopproberecording-string) | `void` | Stop recording data for a selected probe. |
| [`startProbeTracking(String, String[], ProbeObjectType, ProbeValueType)`](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype) | `void` | Start tracking selected elements for a selected probe. |
| [`stopProbeTracking(String, String[], ProbeObjectType, ProbeValueType)`](#com-jprofiler-api-controller-controller-stopprobetracking-string-string-probeobjecttype-probevaluetype) | `void` | Stop tracking selected elements for a selected probe. |
| [`startComplexityRecording()`](#com-jprofiler-api-controller-controller-startcomplexityrecording) | `void` | Starts algorithmic complexity recording for all previously configured methods. |
| [`stopComplexityRecording()`](#com-jprofiler-api-controller-controller-stopcomplexityrecording) | `void` | Stops algorithmic complexity recording and prepares data for snapshot. |
| [`startCallTracer(int, boolean, boolean)`](#com-jprofiler-api-controller-controller-startcalltracer-int-boolean-boolean) | `void` | Starts the call tracer. |
| [`stopCallTracer()`](#com-jprofiler-api-controller-controller-stopcalltracer) | `void` | Stops the call tracer. |
| [`startMonitorRecording()`](#com-jprofiler-api-controller-controller-startmonitorrecording) | `void` | Start recording of monitor usage with default thresholds of 100 microseconds for blocking events and 100 ms for waiting events. |
| [`startMonitorRecording(int, int)`](#com-jprofiler-api-controller-controller-startmonitorrecording-int-int) | `void` | Start recording of monitor usage. |
| [`stopMonitorRecording()`](#com-jprofiler-api-controller-controller-stopmonitorrecording) | `void` | Stop recording of monitor usage. |
| [`startAllocRecording(boolean)`](#com-jprofiler-api-controller-controller-startallocrecording-boolean) | `void` | Starts recording of memory allocations. |
| [`startAllocRecording(boolean, TrackingOptions)`](#com-jprofiler-api-controller-controller-startallocrecording-boolean-trackingoptions) | `void` | Starts recording of memory allocations. |
| [`stopAllocRecording()`](#com-jprofiler-api-controller-controller-stopallocrecording) | `void` | Stops recording of memory allocations. |
| [`addBookmark(String)`](#com-jprofiler-api-controller-controller-addbookmark-string) | `void` | Adds a bookmark at the current time. |
| [`addBookmark(String, int, boolean)`](#com-jprofiler-api-controller-controller-addbookmark-string-int-boolean) | `void` | Add a bookmark at the current time. |
| [`triggerThreadDump(boolean)`](#com-jprofiler-api-controller-controller-triggerthreaddump-boolean) | `void` | Trigger a thread dump. |
| [`triggerThreadDump(boolean, String)`](#com-jprofiler-api-controller-controller-triggerthreaddump-boolean-string) | `void` | Trigger a thread dump with an optional label for identification. |
| [`triggerAllObjectsDump()`](#com-jprofiler-api-controller-controller-triggerallobjectsdump) | `void` | Triggers a dump of all objects on the heap to be displayed in the "All objects" view. |
| [`triggerAllObjectsDump(String)`](#com-jprofiler-api-controller-controller-triggerallobjectsdump-string) | `void` | Triggers a dump of all objects on the heap to be displayed in the "All objects" view with an optional label for identification. |
| [`triggerMonitorDump()`](#com-jprofiler-api-controller-controller-triggermonitordump) | `void` | Trigger a dump of current monitors and locks. |
| [`triggerHeapDump()`](#com-jprofiler-api-controller-controller-triggerheapdump) | `void` | Trigger a heap dump. |
| [`triggerHeapDump(HeapDumpOptions)`](#com-jprofiler-api-controller-controller-triggerheapdump-heapdumpoptions) | `void` | Trigger a heap dump with the specified [`heap dump options`](#com-jprofiler-api-controller-heapdumpoptions). |
| [`markHeap()`](#com-jprofiler-api-controller-controller-markheap) | `void` | Mark all objects currently on the heap as "old". |
| [`saveSnapshot(File)`](#com-jprofiler-api-controller-controller-savesnapshot-file) | `void` | Saves a snapshot of all profiling data to disk. |
| [`startThreadProfiling()`](#com-jprofiler-api-controller-controller-startthreadprofiling) | `void` | Starts recording of thread states and monitor usage. |
| [`stopThreadProfiling()`](#com-jprofiler-api-controller-controller-stopthreadprofiling) | `void` | Stops recording of thread states and monitor usage. |
| [`startVMTelemetryRecording()`](#com-jprofiler-api-controller-controller-startvmtelemetryrecording) | `void` | Starts recording of VM telemetry data. |
| [`stopVMTelemetryRecording()`](#com-jprofiler-api-controller-controller-stopvmtelemetryrecording) | `void` | Stops recording of VM telemetry data. |
| [`saveSnapshotOnExit(File)`](#com-jprofiler-api-controller-controller-savesnapshotonexit-file) | `void` | Saves a snapshot of all profiling data to disk when the VM shuts down. |
| [`enableTriggerGroup(boolean, String)`](#com-jprofiler-api-controller-controller-enabletriggergroup-boolean-string) | `void` | Enable or disable all triggers with a specified group ID. |
| [`enableTriggers(boolean)`](#com-jprofiler-api-controller-controller-enabletriggers-boolean) | `void` | Enable or disable all triggers. |
| [`triggerMBeanSnapshot(String, String)`](#com-jprofiler-api-controller-controller-triggermbeansnapshot-string-string) | `void` | Triggers an MBean snapshot with an optional label. |

<a id="com-jprofiler-api-controller-controller-startcpurecording-boolean"></a>##### startCPURecording(boolean)

```java
public static void startCPURecording(boolean reset)
```

Starts recording CPU data.
This method can be called repeatedly and alternatingly with
`stopCPURecording()`. With these methods you can restrict
CPU profiling to certain regions of your code.


**Parameters:**

- `reset` — if `true` and cpu recording is currently switched off,
any previously accumulated CPU profiling data will be discarded.
If `false`, CPU data will be accumulated across pairs of
invocations of `startCPURecording()` and `stopCPURecording()`.

<a id="com-jprofiler-api-controller-controller-startcpurecording-boolean-trackingoptions"></a>##### startCPURecording(boolean, TrackingOptions)

```java
public static void startCPURecording(boolean reset, TrackingOptions trackingOptions)
```

Starts recording CPU data.
This method can be called repeatedly and alternatingly with
`stopCPURecording()`. With these methods you can restrict
CPU profiling to certain regions of your code.


**Parameters:**

- `reset` — if `true` and cpu recording is currently switched off,
any previously accumulated CPU profiling data will be discarded.
If `false`, CPU data will be accumulated across pairs of
invocations of `startCPURecording()` and `stopCPURecording()`.
- `trackingOptions` — the request tracking options or `null` for the previous state

<a id="com-jprofiler-api-controller-controller-stopcpurecording"></a>##### stopCPURecording()

```java
public static void stopCPURecording()
```

Stops CPU recording.
This method can be called after `startCPURecording()` has been called.
However, you do not have to call it since CPU profiling can run until the
JVM exits.

<a id="com-jprofiler-api-controller-controller-startproberecording-string-boolean"></a>##### startProbeRecording(String, boolean)

```java
public static void startProbeRecording(String probeName, boolean events)
```

Start recording data for a selected probe. For more information and a more general signature see
[`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-proberecordingoptions).

<a id="com-jprofiler-api-controller-controller-startproberecording-string-proberecordingoptions"></a>##### startProbeRecording(String, ProbeRecordingOptions)

```java
public static void startProbeRecording(String probeName, ProbeRecordingOptions recordingOptions)
```

Start recording data for a selected probe.


**Parameters:**

- `probeName` — the name of the probe. For built-in probes, see the `PROBE_NAME` constants in this class.
For embedded and injected probes, the class name of the probe is used.
For script probes, this name is `script.n` where n is the one-based index of the script probe.
- `recordingOptions` — determines whether special recordings for the probe should be switched on

**See also:**

- [Controller.stopProbeRecording](#com-jprofiler-api-controller-controller-stopproberecording-string)
- [ProbeRecordingOptions](#com-jprofiler-api-controller-proberecordingoptions)

<a id="com-jprofiler-api-controller-controller-stopproberecording-string"></a>##### stopProbeRecording(String)

```java
public static void stopProbeRecording(String probeName)
```

Stop recording data for a selected probe.


**Parameters:**

- `probeName` — the name of the probe. For built-in probes, see the `PROBE_NAME` constants in this class.
For embedded and injected probes, the class name of the probe is used.
For script probes, this name is `script.n` where n is the one-based index of the script probe.

**See also:**

- [Controller.startProbeRecording](#com-jprofiler-api-controller-controller-startproberecording-string-boolean)

<a id="com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype"></a>##### startProbeTracking(String, String[], ProbeObjectType, ProbeValueType)

```java
public static void startProbeTracking(String probeName, String[] descriptions, ProbeObjectType objectType, ProbeValueType valueType)
```

Start tracking selected elements for a selected probe. Probe recording must be switched on for the selected
probe otherwise this method does not have any effect.


**Parameters:**

- `probeName` — the name of the probe. For built-in probes, see the `PROBE_NAME` constants in this class.
For embedded and injected probes, the class name of the probe is used.
For script probes, this name is `script.n` where n is the one-based index of the script probe.
- `descriptions` — the descriptions of the tracked elements. These are the strings that you see in the probe view in the JProfiler GUI.
The sum of the selected elements will be tracked in a single graph. To get separate graphs,
call this method multiple times.
- `objectType` — the type of the elements to be tracked
- `valueType` — the type of the values to be tracked

<a id="com-jprofiler-api-controller-controller-stopprobetracking-string-string-probeobjecttype-probevaluetype"></a>##### stopProbeTracking(String, String[], ProbeObjectType, ProbeValueType)

```java
public static void stopProbeTracking(String probeName, String[] description, ProbeObjectType objectType, ProbeValueType valueType)
```

Stop tracking selected elements for a selected probe. This only has an effect if
[`Controller.startProbeTracking`](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype) has been called before.


**Parameters:**

- `probeName` — the name of the probe. For built-in probes, see the `PROBE_NAME` constants in this class.
For embedded and injected probes, the class name of the probe is used.
For script probes, this name is `script.n` where n is the one-based index of the script probe.
- `description` — the descriptions of the tracked elements
- `objectType` — the type of the elements to be tracked
- `valueType` — the type of the values to be tracked

<a id="com-jprofiler-api-controller-controller-startcomplexityrecording"></a>##### startComplexityRecording()

```java
public static void startComplexityRecording()
```

Starts algorithmic complexity recording for all previously configured methods.

<a id="com-jprofiler-api-controller-controller-stopcomplexityrecording"></a>##### stopComplexityRecording()

```java
public static void stopComplexityRecording()
```

Stops algorithmic complexity recording and prepares data for snapshot.

<a id="com-jprofiler-api-controller-controller-startcalltracer-int-boolean-boolean"></a>##### startCallTracer(int, boolean, boolean)

```java
public static void startCallTracer(int cap, boolean recordFiltered, boolean reset)
```

Starts the call tracer.
This method can be called repeatedly and alternatingly with
`stopCallTracer()`.


**Parameters:**

- `recordFiltered` — if `true`, calls into filtered classes will be recorded, too.
- `cap` — the maximum number of events to be recorded. A good default is 100000.
- `reset` — if `true` previously recorded calls will be cleared.

<a id="com-jprofiler-api-controller-controller-stopcalltracer"></a>##### stopCallTracer()

```java
public static void stopCallTracer()
```

Stops the call tracer.
This method can be called after `startCallTracer()` has been called.
However, you do not have to call it since the call tracer will stop automatically
after the cap has been reached. The data will be delivered to the frontend afterwards
if used in online mode.

<a id="com-jprofiler-api-controller-controller-startmonitorrecording"></a>##### startMonitorRecording()

```java
public static void startMonitorRecording()
```

Start recording of monitor usage with default thresholds of 100 microseconds
for blocking events and 100 ms for waiting events.
This method can be called repeatedly and alternatingly with
`stopMonitorRecording()`. Monitor profiling is switched off
by default.

<a id="com-jprofiler-api-controller-controller-startmonitorrecording-int-int"></a>##### startMonitorRecording(int, int)

```java
public static void startMonitorRecording(int blockingThreshold, int waitingThreshold)
```

Start recording of monitor usage.
This method can be called repeatedly and alternatingly with
`stopMonitorRecording()`. Monitor profiling is switched off
by default.


**Parameters:**

- `blockingThreshold` — the recording threshold for blocking events in microseconds.
- `waitingThreshold` — the recording threshold for waiting events in microseconds.

<a id="com-jprofiler-api-controller-controller-stopmonitorrecording"></a>##### stopMonitorRecording()

```java
public static void stopMonitorRecording()
```

Stop recording of monitor usage.
This method can be called repeatedly and alternatingly with
`startMonitorRecording()`. However, you do not have to call it since
monitor profiling can run until the JVM exits.

<a id="com-jprofiler-api-controller-controller-startallocrecording-boolean"></a>##### startAllocRecording(boolean)

```java
public static void startAllocRecording(boolean reset)
```

Starts recording of memory allocations.
This method can be called repeatedly and alternatingly with
`stopAllocRecording()`. With these methods you can restrict
memory allocation profiling to certain regions of your code.
This is especially useful for profiling an application running within
an application server.


**Parameters:**

- `reset` — if `true` and allocation recording is currently switched off,
any previously recorded profiling data will be discarded.
If `false`, allocations within all pairs of invocations of
`startAllocRecording()` and `stopAllocRecording()` will be recorded.

<a id="com-jprofiler-api-controller-controller-startallocrecording-boolean-trackingoptions"></a>##### startAllocRecording(boolean, TrackingOptions)

```java
public static void startAllocRecording(boolean reset, TrackingOptions trackingOptions)
```

Starts recording of memory allocations.
This method can be called repeatedly and alternatingly with
`stopAllocRecording()`. With these methods you can restrict
memory allocation profiling to certain regions of your code.
This is especially useful for profiling an application running within
an application server.


**Parameters:**

- `reset` — if `true` and allocation recording is currently switched off,
any previously recorded profiling data will be discarded.
If `false`, allocations within all pairs of invocations of
`startAllocRecording()` and `stopAllocRecording()` will be recorded.
- `trackingOptions` — the request tracking options

<a id="com-jprofiler-api-controller-controller-stopallocrecording"></a>##### stopAllocRecording()

```java
public static void stopAllocRecording()
```

Stops recording of memory allocations.
This method can be called after `startAllocRecording()` has been called.
However, you do not have to call it since memory profiling can run until the
JVM exits.

<a id="com-jprofiler-api-controller-controller-addbookmark-string"></a>##### addBookmark(String)

```java
public static void addBookmark(String description)
```

Adds a bookmark at the current time.
The bookmark will be displayed in all JProfiler graphs with a time axis.
The description will be displayed in the tooltip for the bookmark.


**Parameters:**

- `description` — the name of the bookmark, may also be `null`

<a id="com-jprofiler-api-controller-controller-addbookmark-string-int-boolean"></a>##### addBookmark(String, int, boolean)

```java
public static void addBookmark(String description, int color, boolean dashed)
```

Add a bookmark at the current time.
The bookmark will be displayed in all JProfiler graphs with a time axis.
The description will be displayed in the tooltip for the bookmark.


**Parameters:**

- `description` — the name of the bookmark, may also be `null`
- `color` — the RGB color to be used for drawing the bookmark, for example `0xFF0000`.
- `dashed` — if the line for drawing the bookmark should be dashed or not

<a id="com-jprofiler-api-controller-controller-triggerthreaddump-boolean"></a>##### triggerThreadDump(boolean)

```java
public static void triggerThreadDump(boolean includeVirtualThreads)
```

Trigger a thread dump.


**Parameters:**

- `includeVirtualThreads` — if `true`, virtual threads will be included. The thread dump won't be synchronized in this case.

<a id="com-jprofiler-api-controller-controller-triggerthreaddump-boolean-string"></a>##### triggerThreadDump(boolean, String)

```java
public static void triggerThreadDump(boolean includeVirtualThreads, String label)
```

Trigger a thread dump with an optional label for identification.


**Parameters:**

- `includeVirtualThreads` — if `true`, virtual threads will be included. The thread dump won't be synchronized in this case.
- `label` — A string parameter used to label the dump. Can be null.

<a id="com-jprofiler-api-controller-controller-triggerallobjectsdump"></a>##### triggerAllObjectsDump()

```java
public static void triggerAllObjectsDump()
```

Triggers a dump of all objects on the heap to be displayed in the "All objects" view.

<a id="com-jprofiler-api-controller-controller-triggerallobjectsdump-string"></a>##### triggerAllObjectsDump(String)

```java
public static void triggerAllObjectsDump(String label)
```

Triggers a dump of all objects on the heap to be displayed in the "All objects" view
with an optional label for identification.


**Parameters:**

- `label` — A string parameter used to label the dump. Can be null.

<a id="com-jprofiler-api-controller-controller-triggermonitordump"></a>##### triggerMonitorDump()

```java
public static void triggerMonitorDump()
```

Trigger a dump of current monitors and locks.

<a id="com-jprofiler-api-controller-controller-triggerheapdump"></a>##### triggerHeapDump()

```java
public static void triggerHeapDump()
```

Trigger a heap dump.
Calls `triggerHeapDump(HeapDumpOptions.DEFAULT)`.


**See also:**

- [Controller.triggerHeapDump](#com-jprofiler-api-controller-controller-triggerheapdump-heapdumpoptions)

<a id="com-jprofiler-api-controller-controller-triggerheapdump-heapdumpoptions"></a>##### triggerHeapDump(HeapDumpOptions)

```java
public static void triggerHeapDump(HeapDumpOptions heapDumpOptions)
```

Trigger a heap dump with the specified [`heap dump options`](#com-jprofiler-api-controller-heapdumpoptions).
If you want to analyze a heap dump with the heap walker in a snapshot saved with
the `saveSnapshot` method, you should call this method from your source code
at an appropriate time.

**ATTENTION:** Taking a heap dump takes a long time (on the order of seconds).
If you call this method too often, your application might become unusable or take
an excessively long time to finish.


**Parameters:**

- `heapDumpOptions` — the options for the heap dump

<a id="com-jprofiler-api-controller-controller-markheap"></a>##### markHeap()

```java
public static void markHeap()
```

Mark all objects currently on the heap as "old". In the next heap dump, you can then distinguish between objects created before and after this method was called.
This action has much less overhead than a full heap dump.

<a id="com-jprofiler-api-controller-controller-savesnapshot-file"></a>##### saveSnapshot(File)

```java
public static void saveSnapshot(File file)
```

Saves a snapshot of all profiling data to disk.
This is especially important for offline profiling.
You should choose the standard extension `.jps` for the
`file` parameter, since JProfiler's GUI frontend filters the corresponding
file choosers for that extension. If you want to save several snapshots during
one profiling run, take care to provide unique `file` parameters
since snapshot files will be overwritten otherwise.

**ATTENTION:** Saving a snapshot takes a long time (on the order of seconds).
If you call this method too often, your application might become unusable or take
an excessively long time to finish, and your hard disk might run out of space.


**Parameters:**

- `file` — the file to which the snapshot should be saved.

<a id="com-jprofiler-api-controller-controller-startthreadprofiling"></a>##### startThreadProfiling()

```java
public static void startThreadProfiling()
```

Starts recording of thread states and monitor usage.
This method can be called repeatedly and alternatingly with
`stopThreadProfiling()`. For an offline session, thread
profiling is switched on by default.

<a id="com-jprofiler-api-controller-controller-stopthreadprofiling"></a>##### stopThreadProfiling()

```java
public static void stopThreadProfiling()
```

Stops recording of thread states and monitor usage.
This method can be called repeatedly and alternatingly with
`startThreadProfiling()`. However, you do not have to call it since
thread profiling can run until the JVM exits.

<a id="com-jprofiler-api-controller-controller-startvmtelemetryrecording"></a>##### startVMTelemetryRecording()

```java
public static void startVMTelemetryRecording()
```

Starts recording of VM telemetry data.
This method can be called repeatedly and alternatingly with
`stopVMTelemetryRecording()`. For an offline session, VM telemetry
recording is switched on by default.

<a id="com-jprofiler-api-controller-controller-stopvmtelemetryrecording"></a>##### stopVMTelemetryRecording()

```java
public static void stopVMTelemetryRecording()
```

Stops recording of VM telemetry data.
This method can be called repeatedly and alternatingly with
`startVMTelemetryRecording()`. However, you do not have to call it since
VM telemetry recording can run until the JVM exits.

<a id="com-jprofiler-api-controller-controller-savesnapshotonexit-file"></a>##### saveSnapshotOnExit(File)

```java
public static void saveSnapshotOnExit(File file)
```

Saves a snapshot of all profiling data to disk when the VM shuts down.
This is especially important for offline profiling.
You should choose the standard extension `.jps` for the
`file` parameter, since JProfiler's GUI frontend filters the corresponding
file choosers for that extension.

**ATTENTION:** Saving a snapshot can take quite some time (on the order of seconds).
When the VM is shut down during a user logout or a system shutdown, the OS may terminate
the VM before saving is completed.


**Parameters:**

- `file` — the file to which the snapshot should be saved.

<a id="com-jprofiler-api-controller-controller-enabletriggergroup-boolean-string"></a>##### enableTriggerGroup(boolean, String)

```java
public static void enableTriggerGroup(boolean enabled, String groupId) throws IllegalArgumentException
```

Enable or disable all triggers with a specified group ID. The group ID can be entered in
the "Group ID" step of the trigger configuration wizard in the JProfiler GUI.


**Parameters:**

- `enabled` — if the triggers should be enabled
- `groupId` — the group ID

**Throws:**

- `IllegalArgumentException` — if no trigger with the specified group ID exists

<a id="com-jprofiler-api-controller-controller-enabletriggers-boolean"></a>##### enableTriggers(boolean)

```java
public static void enableTriggers(boolean enabled)
```

Enable or disable all triggers. The enabled/disabled state of the single triggers will not be lost,
disabling all triggers with this method overrides the enabled/disabled state of the single triggers.


**Parameters:**

- `enabled` — if the triggers should be enabled

<a id="com-jprofiler-api-controller-controller-triggermbeansnapshot-string-string"></a>##### triggerMBeanSnapshot(String, String)

```java
public static void triggerMBeanSnapshot(String label, String regexp)
```

Triggers an MBean snapshot with an optional label. The recorded MBeans can be
optionally filtered with a regular expression.


**Parameters:**

- `label` — An optional label for the snapshot. Can be null.
- `regexp` — An optional regular expression for filtering MBeans based on the canonical name. Can be null.

#### Fields

| Field | Type | Description |
|---|---|---|
| [PROBE_NAME_PERSISTENCE](#com-jprofiler-api-controller-controller-probe-name-persistence) | `String` | Name of the built-in persistence probe. |
| [PROBE_NAME_JDBC](#com-jprofiler-api-controller-controller-probe-name-jdbc) | `String` | Name of the built-in JDBC probe. |
| [PROBE_NAME_JMS](#com-jprofiler-api-controller-controller-probe-name-jms) | `String` | Name of the built-in JMS probe. |
| [PROBE_NAME_JNDI](#com-jprofiler-api-controller-controller-probe-name-jndi) | `String` | Name of the built-in JNDI probe. |
| [PROBE_NAME_MONGO_DB](#com-jprofiler-api-controller-controller-probe-name-mongo-db) | `String` | Name of the built-in MongoDB probe. |
| [PROBE_NAME_CASSANDRA](#com-jprofiler-api-controller-controller-probe-name-cassandra) | `String` | Name of the built-in Cassandra probe. |
| [PROBE_NAME_HTTP_CLIENT](#com-jprofiler-api-controller-controller-probe-name-http-client) | `String` | Name of the built-in HTTP client probe. |
| [PROBE_NAME_RMI](#com-jprofiler-api-controller-controller-probe-name-rmi) | `String` | Name of the built-in RMI probe. |
| [PROBE_NAME_GRPC](#com-jprofiler-api-controller-controller-probe-name-grpc) | `String` | Name of the built-in gRPC probe. |
| [PROBE_NAME_AI](#com-jprofiler-api-controller-controller-probe-name-ai) | `String` | Name of the built-in AI probe. |
| [PROBE_NAME_KAFKA_PRODUCER](#com-jprofiler-api-controller-controller-probe-name-kafka-producer) | `String` | Name of the built-in Apache Kafka producer probe. |
| [PROBE_NAME_KAFKA_CONSUMER](#com-jprofiler-api-controller-controller-probe-name-kafka-consumer) | `String` | Name of the built-in Apache Kafka consumer probe. |
| [PROBE_NAME_WS](#com-jprofiler-api-controller-controller-probe-name-ws) | `String` | Name of the built-in web service probe. |
| [PROBE_NAME_HTTP_SERVER](#com-jprofiler-api-controller-controller-probe-name-http-server) | `String` | Name of the built-in http server probe. |
| [PROBE_NAME_FILE](#com-jprofiler-api-controller-controller-probe-name-file) | `String` | Name of the built-in file probe. |
| [PROBE_NAME_SOCKET](#com-jprofiler-api-controller-controller-probe-name-socket) | `String` | Name of the built-in socket probe. |
| [PROBE_NAME_PROCESS](#com-jprofiler-api-controller-controller-probe-name-process) | `String` | Name of the built-in process probe. |
| [PROBE_NAME_CLASS_LOADER](#com-jprofiler-api-controller-controller-probe-name-class-loader) | `String` | Name of the built-in class loader probe. |
| [PROBE_NAME_EXCEPTION](#com-jprofiler-api-controller-controller-probe-name-exception) | `String` | Name of the built-in Exception probe. |
| [PROBE_NAME_GC](#com-jprofiler-api-controller-controller-probe-name-gc) | `String` | Name of the built-in GC probe. |
| [PROBE_NAME_ALL_CUSTOM](#com-jprofiler-api-controller-controller-probe-name-all-custom) | `String` | Identifier for all custom probes. |

<a id="com-jprofiler-api-controller-controller-probe-name-persistence"></a>##### PROBE_NAME_PERSISTENCE

```java
public static final String PROBE_NAME_PERSISTENCE = "builtin.PersistenceProbe"
```

Name of the built-in persistence probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-jdbc"></a>##### PROBE_NAME_JDBC

```java
public static final String PROBE_NAME_JDBC = "builtin.JdbcProbe"
```

Name of the built-in JDBC probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-jms"></a>##### PROBE_NAME_JMS

```java
public static final String PROBE_NAME_JMS = "builtin.JmsProbe"
```

Name of the built-in JMS probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-jndi"></a>##### PROBE_NAME_JNDI

```java
public static final String PROBE_NAME_JNDI = "builtin.JndiProbe"
```

Name of the built-in JNDI probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-mongo-db"></a>##### PROBE_NAME_MONGO_DB

```java
public static final String PROBE_NAME_MONGO_DB = "builtin.MongoDbProbe"
```

Name of the built-in MongoDB probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-cassandra"></a>##### PROBE_NAME_CASSANDRA

```java
public static final String PROBE_NAME_CASSANDRA = "builtin.CassandraProbe"
```

Name of the built-in Cassandra probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-http-client"></a>##### PROBE_NAME_HTTP_CLIENT

```java
public static final String PROBE_NAME_HTTP_CLIENT = "builtin.HttpClientProbe"
```

Name of the built-in HTTP client probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-rmi"></a>##### PROBE_NAME_RMI

```java
public static final String PROBE_NAME_RMI = "builtin.RmiProbe"
```

Name of the built-in RMI probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-grpc"></a>##### PROBE_NAME_GRPC

```java
public static final String PROBE_NAME_GRPC = "builtin.GrpcProbe"
```

Name of the built-in gRPC probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-ai"></a>##### PROBE_NAME_AI

```java
public static final String PROBE_NAME_AI = "builtin.AiProbe"
```

Name of the built-in AI probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-kafka-producer"></a>##### PROBE_NAME_KAFKA_PRODUCER

```java
public static final String PROBE_NAME_KAFKA_PRODUCER = "builtin.KafkaProducerProbe"
```

Name of the built-in Apache Kafka producer probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-kafka-consumer"></a>##### PROBE_NAME_KAFKA_CONSUMER

```java
public static final String PROBE_NAME_KAFKA_CONSUMER = "builtin.KafkaConsumerProbe"
```

Name of the built-in Apache Kafka consumer probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-ws"></a>##### PROBE_NAME_WS

```java
public static final String PROBE_NAME_WS = "builtin.WsProbe"
```

Name of the built-in web service probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-http-server"></a>##### PROBE_NAME_HTTP_SERVER

```java
public static final String PROBE_NAME_HTTP_SERVER = "builtin.HttpServerProbe"
```

Name of the built-in http server probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-file"></a>##### PROBE_NAME_FILE

```java
public static final String PROBE_NAME_FILE = "builtin.FileProbe"
```

Name of the built-in file probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-socket"></a>##### PROBE_NAME_SOCKET

```java
public static final String PROBE_NAME_SOCKET = "builtin.SocketProbe"
```

Name of the built-in socket probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-process"></a>##### PROBE_NAME_PROCESS

```java
public static final String PROBE_NAME_PROCESS = "builtin.ProcessProbe"
```

Name of the built-in process probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-class-loader"></a>##### PROBE_NAME_CLASS_LOADER

```java
public static final String PROBE_NAME_CLASS_LOADER = "builtin.ClassLoaderProbe"
```

Name of the built-in class loader probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-exception"></a>##### PROBE_NAME_EXCEPTION

```java
public static final String PROBE_NAME_EXCEPTION = "builtin.ExceptionProbe"
```

Name of the built-in Exception probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-gc"></a>##### PROBE_NAME_GC

```java
public static final String PROBE_NAME_GC = "builtin.GCProbe"
```

Name of the built-in GC probe. Used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string).

<a id="com-jprofiler-api-controller-controller-probe-name-all-custom"></a>##### PROBE_NAME_ALL_CUSTOM

```java
public static final String PROBE_NAME_ALL_CUSTOM = "builtin.AllCustom"
```

Identifier for all custom probes. If used in [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-boolean) and [`Controller.stopProbeRecording`](#com-jprofiler-api-controller-controller-stopproberecording-string) all
custom probes will be started or stopped.

### <a id="com-jprofiler-api-controller-heapdumpoptions"></a>HeapDumpOptions

Import: `import com.jprofiler.api.controller.HeapDumpOptions;`

```java
public class HeapDumpOptions
```

Heap dump options for calling [`Controller.triggerHeapDump`](#com-jprofiler-api-controller-controller-triggerheapdump-heapdumpoptions)
The default values after constructing an instance of this class are equivalent to calling
`heapDumpOptions.fullGc(true).primitiveData(true).calculateRetainedSizes(true)`.
On OpenJ9 VMs, primitive data is not recorded by default.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`fullGc(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean) | `HeapDumpOptions` | Determines whether a full garbage collection should be performed for the heap dump. |
| [`primitiveData(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-primitivedata-boolean) | `HeapDumpOptions` | Determines whether primitive data should be recorded for the heap dump. |
| [`calculateRetainedSizes(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-calculateretainedsizes-boolean) | `HeapDumpOptions` | Determines whether retained sizes should be calculated for the heap dump. |
| [`selectRecorded(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-selectrecorded-boolean) | `HeapDumpOptions` | Determines whether recorded objects should be selected when the heap dump is opened in the JProfiler GUI. |
| [`retainSoftReferences(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-retainsoftreferences-boolean) | `HeapDumpOptions` | Determines whether soft references should be considered for full GC. |
| [`retainWeakReferences(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-retainweakreferences-boolean) | `HeapDumpOptions` | Determines whether weak references should be considered for full GC. |
| [`retainPhantomReferences(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-retainphantomreferences-boolean) | `HeapDumpOptions` | Determines whether phantom references should be considered for full GC. |
| [`retainFinalizerReferences(boolean)`](#com-jprofiler-api-controller-heapdumpoptions-retainfinalizerreferences-boolean) | `HeapDumpOptions` | Determines whether finalizer references should be considered for full GC. |
| [`isFullGc()`](#com-jprofiler-api-controller-heapdumpoptions-isfullgc) | `boolean` | Returns if a full garbage collection should be performed for the heap dump. |
| [`isPrimitiveData()`](#com-jprofiler-api-controller-heapdumpoptions-isprimitivedata) | `boolean` | Returns if primitive data should be recorded for the heap dump. |
| [`isCalculateRetainedSizes()`](#com-jprofiler-api-controller-heapdumpoptions-iscalculateretainedsizes) | `boolean` | Returns if retained sizes should be calculated for the heap dump. |
| [`isSelectRecorded()`](#com-jprofiler-api-controller-heapdumpoptions-isselectrecorded) | `boolean` | Returns if recorded objects should be selected when the heap dump is opened in the JProfiler GUI. |
| [`isRetainSoftReferences()`](#com-jprofiler-api-controller-heapdumpoptions-isretainsoftreferences) | `boolean` | Returns if soft references should retain objects in the heap dump if full GC is selected. |
| [`isRetainWeakReferences()`](#com-jprofiler-api-controller-heapdumpoptions-isretainweakreferences) | `boolean` | Returns if weak references should retain objects in the heap dump if full GC is selected. |
| [`isRetainPhantomReferences()`](#com-jprofiler-api-controller-heapdumpoptions-isretainphantomreferences) | `boolean` | Returns if phantom references should retain objects in the heap dump if full GC is selected. |
| [`isRetainFinalizerReferences()`](#com-jprofiler-api-controller-heapdumpoptions-isretainfinalizerreferences) | `boolean` | Returns if finalizer references should retain objects in the heap dump if full GC is selected. |
| [`freeze()`](#com-jprofiler-api-controller-heapdumpoptions-freeze) | `HeapDumpOptions` | Make these heap dump options unmodifiable. |

<a id="com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean"></a>##### fullGc(boolean)

```java
public HeapDumpOptions fullGc(boolean fullGc)
```

Determines whether a full garbage collection should be performed for the heap dump.
The default is `true`.


**Parameters:**

- `fullGc` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-heapdumpoptions-primitivedata-boolean"></a>##### primitiveData(boolean)

```java
public HeapDumpOptions primitiveData(boolean primitiveData)
```

Determines whether primitive data should be recorded for the heap dump.
The default is `true`.


**Parameters:**

- `primitiveData` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-heapdumpoptions-calculateretainedsizes-boolean"></a>##### calculateRetainedSizes(boolean)

```java
public HeapDumpOptions calculateRetainedSizes(boolean calculateRetainedSizes)
```

Determines whether retained sizes should be calculated for the heap dump.
The default is `true`.


**Parameters:**

- `calculateRetainedSizes` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-heapdumpoptions-selectrecorded-boolean"></a>##### selectRecorded(boolean)

```java
public HeapDumpOptions selectRecorded(boolean selectRecorded)
```

Determines whether recorded objects should be selected when the heap dump is opened in the JProfiler GUI.
The default value is `false`.


**Parameters:**

- `selectRecorded` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-heapdumpoptions-retainsoftreferences-boolean"></a>##### retainSoftReferences(boolean)

```java
public HeapDumpOptions retainSoftReferences(boolean retainSoftReferences)
```

Determines whether soft references should be considered for full GC. The default value is `true`.
To remove objects that are only held by soft references, call this method with the argument `false`.


**Parameters:**

- `retainSoftReferences` — whether soft references should be retained in the heap dump

**Returns:** this instance

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-retainweakreferences-boolean"></a>##### retainWeakReferences(boolean)

```java
public HeapDumpOptions retainWeakReferences(boolean retainWeakReferences)
```

Determines whether weak references should be considered for full GC. The default value is `false`.
To retain objects that are only held by weak references, call this method with the argument `true`.


**Parameters:**

- `retainWeakReferences` — whether weak references should be retained in the heap dump

**Returns:** this instance

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-retainphantomreferences-boolean"></a>##### retainPhantomReferences(boolean)

```java
public HeapDumpOptions retainPhantomReferences(boolean retainPhantomReferences)
```

Determines whether phantom references should be considered for full GC. The default value is `false`.
To retain objects that are only held by phantom references, call this method with the argument `true`.


**Parameters:**

- `retainPhantomReferences` — whether phantom references should be retained in the heap dump

**Returns:** this instance

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-retainfinalizerreferences-boolean"></a>##### retainFinalizerReferences(boolean)

```java
public HeapDumpOptions retainFinalizerReferences(boolean retainFinalizerReferences)
```

Determines whether finalizer references should be considered for full GC. The default value is `false`.
To retain objects that are only held by finalizer references, call this method with the argument `true`.


**Parameters:**

- `retainFinalizerReferences` — whether finalizer references should be retained in the heap dump

**Returns:** this instance

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-isfullgc"></a>##### isFullGc()

```java
public boolean isFullGc()
```

Returns if a full garbage collection should be performed for the heap dump.


**Returns:** the value

<a id="com-jprofiler-api-controller-heapdumpoptions-isprimitivedata"></a>##### isPrimitiveData()

```java
public boolean isPrimitiveData()
```

Returns if primitive data should be recorded for the heap dump.


**Returns:** the value

<a id="com-jprofiler-api-controller-heapdumpoptions-iscalculateretainedsizes"></a>##### isCalculateRetainedSizes()

```java
public boolean isCalculateRetainedSizes()
```

Returns if retained sizes should be calculated for the heap dump.


**Returns:** the value

<a id="com-jprofiler-api-controller-heapdumpoptions-isselectrecorded"></a>##### isSelectRecorded()

```java
public boolean isSelectRecorded()
```

Returns if recorded objects should be selected when the heap dump is opened in the JProfiler GUI.


**Returns:** the value

<a id="com-jprofiler-api-controller-heapdumpoptions-isretainsoftreferences"></a>##### isRetainSoftReferences()

```java
public boolean isRetainSoftReferences()
```

Returns if soft references should retain objects in the heap dump if full GC is selected.


**Returns:** the value

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-isretainweakreferences"></a>##### isRetainWeakReferences()

```java
public boolean isRetainWeakReferences()
```

Returns if weak references should retain objects in the heap dump if full GC is selected.


**Returns:** the value

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-isretainphantomreferences"></a>##### isRetainPhantomReferences()

```java
public boolean isRetainPhantomReferences()
```

Returns if phantom references should retain objects in the heap dump if full GC is selected.


**Returns:** the value

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-isretainfinalizerreferences"></a>##### isRetainFinalizerReferences()

```java
public boolean isRetainFinalizerReferences()
```

Returns if finalizer references should retain objects in the heap dump if full GC is selected.


**Returns:** the value

**See also:**

- [HeapDumpOptions.fullGc](#com-jprofiler-api-controller-heapdumpoptions-fullgc-boolean)

<a id="com-jprofiler-api-controller-heapdumpoptions-freeze"></a>##### freeze()

```java
public HeapDumpOptions freeze()
```

Make these heap dump options unmodifiable. Further modification attempts will result in an
`UnsupportedOperationException`.


**Returns:** this instance

#### Constructors

| Signature | Description |
|---|---|
| [`HeapDumpOptions()`](#com-jprofiler-api-controller-heapdumpoptions-heapdumpoptions) | Create a new instance with the default options described above. |

<a id="com-jprofiler-api-controller-heapdumpoptions-heapdumpoptions"></a>##### HeapDumpOptions()

```java
public HeapDumpOptions()
```

Create a new instance with the default options described above.

#### Fields

| Field | Type | Description |
|---|---|---|
| [DEFAULT](#com-jprofiler-api-controller-heapdumpoptions-default) | `HeapDumpOptions` | The default value used by [`Controller.triggerHeapDump`](#com-jprofiler-api-controller-controller-triggerheapdump). |
| [SELECT_RECORDED](#com-jprofiler-api-controller-heapdumpoptions-select-recorded) | `HeapDumpOptions` | Same as [`HeapDumpOptions.DEFAULT`](#com-jprofiler-api-controller-heapdumpoptions-default), only with `selectRecorded(true)`. |
| [NO_FULL_GC](#com-jprofiler-api-controller-heapdumpoptions-no-full-gc) | `HeapDumpOptions` | Same as [`HeapDumpOptions.DEFAULT`](#com-jprofiler-api-controller-heapdumpoptions-default), only with `fullGc(false)`. |

<a id="com-jprofiler-api-controller-heapdumpoptions-default"></a>##### DEFAULT

```java
public static final HeapDumpOptions DEFAULT
```

The default value used by [`Controller.triggerHeapDump`](#com-jprofiler-api-controller-controller-triggerheapdump). This uses the default options described above.

<a id="com-jprofiler-api-controller-heapdumpoptions-select-recorded"></a>##### SELECT_RECORDED

```java
public static final HeapDumpOptions SELECT_RECORDED
```

Same as [`HeapDumpOptions.DEFAULT`](#com-jprofiler-api-controller-heapdumpoptions-default), only with `selectRecorded(true)`.

<a id="com-jprofiler-api-controller-heapdumpoptions-no-full-gc"></a>##### NO_FULL_GC

```java
public static final HeapDumpOptions NO_FULL_GC
```

Same as [`HeapDumpOptions.DEFAULT`](#com-jprofiler-api-controller-heapdumpoptions-default), only with `fullGc(false)`.

### <a id="com-jprofiler-api-controller-probeobjecttype"></a>ProbeObjectType

Import: `import com.jprofiler.api.controller.ProbeObjectType;`

```java
public final enum ProbeObjectType
```

Represents the type of elements to be tracked in probe tracking.


**See also:**

- [Controller.startProbeTracking](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype)

#### Constants

<a id="com-jprofiler-api-controller-probeobjecttype-control-object-from-id"></a>##### CONTROL_OBJECT_FROM_ID

The `descriptions` parameter of the [`startProbeTracking`](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype)
method will contain IDs of control objects.

<a id="com-jprofiler-api-controller-probeobjecttype-control-object-from-description"></a>##### CONTROL_OBJECT_FROM_DESCRIPTION

The `descriptions` parameter of the [`startProbeTracking`](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype)
method will contain the names of control objects.

<a id="com-jprofiler-api-controller-probeobjecttype-hotspot"></a>##### HOTSPOT

The `descriptions` parameter of the [`startProbeTracking`](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype)
method will contain the names of hot spots.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`values()`](#com-jprofiler-api-controller-probeobjecttype-values) | `ProbeObjectType[]` |  |
| [`valueOf(String)`](#com-jprofiler-api-controller-probeobjecttype-valueof-string) | `ProbeObjectType` |  |
| [`toString()`](#com-jprofiler-api-controller-probeobjecttype-tostring) | `String` |  |

<a id="com-jprofiler-api-controller-probeobjecttype-values"></a>##### values()

```java
public static ProbeObjectType[] values()
```

<a id="com-jprofiler-api-controller-probeobjecttype-valueof-string"></a>##### valueOf(String)

```java
public static ProbeObjectType valueOf(String name)
```

<a id="com-jprofiler-api-controller-probeobjecttype-tostring"></a>##### toString()

```java
public String toString()
```

### <a id="com-jprofiler-api-controller-proberecordingoptions"></a>ProbeRecordingOptions

Import: `import com.jprofiler.api.controller.ProbeRecordingOptions;`

```java
public class ProbeRecordingOptions
```

Special probe recording options for calling [`Controller.startProbeRecording`](#com-jprofiler-api-controller-controller-startproberecording-string-proberecordingoptions).
The default values after constructing an instance of this class are all set to `false`.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`events(boolean)`](#com-jprofiler-api-controller-proberecordingoptions-events-boolean) | `ProbeRecordingOptions` | Determines whether single events should be recorded for the "Events" view of the probe. |
| [`connectionLeaks(boolean)`](#com-jprofiler-api-controller-proberecordingoptions-connectionleaks-boolean) | `ProbeRecordingOptions` | Determines whether connection leaks should be recorded for the JDBC probe. |
| [`isEvents()`](#com-jprofiler-api-controller-proberecordingoptions-isevents) | `boolean` | Returns if single events are recorded for the "Events" view of the probe. |
| [`isConnectionLeaks()`](#com-jprofiler-api-controller-proberecordingoptions-isconnectionleaks) | `boolean` | Returns if connection leaks are recorded for the JDBC probe. |
| [`freeze()`](#com-jprofiler-api-controller-proberecordingoptions-freeze) | `ProbeRecordingOptions` | Make these recording options unmodifiable. |

<a id="com-jprofiler-api-controller-proberecordingoptions-events-boolean"></a>##### events(boolean)

```java
public ProbeRecordingOptions events(boolean events)
```

Determines whether single events should be recorded for the "Events" view of the probe.
This setting has no effect when used with a probe that does not have an event view.
The default is `false`.


**Parameters:**

- `events` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-proberecordingoptions-connectionleaks-boolean"></a>##### connectionLeaks(boolean)

```java
public ProbeRecordingOptions connectionLeaks(boolean connectionLeaks)
```

Determines whether connection leaks should be recorded for the JDBC probe.
This setting has no effect when used with other probes.
The default is `false`.


**Parameters:**

- `connectionLeaks` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-proberecordingoptions-isevents"></a>##### isEvents()

```java
public boolean isEvents()
```

Returns if single events are recorded for the "Events" view of the probe.


**Returns:** the value

<a id="com-jprofiler-api-controller-proberecordingoptions-isconnectionleaks"></a>##### isConnectionLeaks()

```java
public boolean isConnectionLeaks()
```

Returns if connection leaks are recorded for the JDBC probe.


**Returns:** the value

<a id="com-jprofiler-api-controller-proberecordingoptions-freeze"></a>##### freeze()

```java
public ProbeRecordingOptions freeze()
```

Make these recording options unmodifiable. Further modification attempts will result in an
`UnsupportedOperationException`.


**Returns:** this instance

#### Constructors

| Signature | Description |
|---|---|
| [`ProbeRecordingOptions()`](#com-jprofiler-api-controller-proberecordingoptions-proberecordingoptions) | Create a new instance with the default options described above. |

<a id="com-jprofiler-api-controller-proberecordingoptions-proberecordingoptions"></a>##### ProbeRecordingOptions()

```java
public ProbeRecordingOptions()
```

Create a new instance with the default options described above.

#### Fields

| Field | Type | Description |
|---|---|---|
| [NONE](#com-jprofiler-api-controller-proberecordingoptions-none) | `ProbeRecordingOptions` | No special recordings are active. |
| [EVENTS](#com-jprofiler-api-controller-proberecordingoptions-events) | `ProbeRecordingOptions` | Same as [`ProbeRecordingOptions.NONE`](#com-jprofiler-api-controller-proberecordingoptions-none), only with `events(true)`. |

<a id="com-jprofiler-api-controller-proberecordingoptions-none"></a>##### NONE

```java
public static final ProbeRecordingOptions NONE
```

No special recordings are active. This is the same as [`constructing`](#com-jprofiler-api-controller-proberecordingoptions-proberecordingoptions) a new object without
calling any further methods.

<a id="com-jprofiler-api-controller-proberecordingoptions-events"></a>##### EVENTS

```java
public static final ProbeRecordingOptions EVENTS
```

Same as [`ProbeRecordingOptions.NONE`](#com-jprofiler-api-controller-proberecordingoptions-none), only with `events(true)`.

### <a id="com-jprofiler-api-controller-probevaluetype"></a>ProbeValueType

Import: `import com.jprofiler.api.controller.ProbeValueType;`

```java
public final enum ProbeValueType
```

Represents the types of values to be tracked in probe tracking.


**See also:**

- [Controller.startProbeTracking](#com-jprofiler-api-controller-controller-startprobetracking-string-string-probeobjecttype-probevaluetype)

#### Constants

<a id="com-jprofiler-api-controller-probevaluetype-times"></a>##### TIMES

The probe tracker will show a graph of average times.

<a id="com-jprofiler-api-controller-probevaluetype-count"></a>##### COUNT

The probe tracker will show a graph of average counts.

<a id="com-jprofiler-api-controller-probevaluetype-throughput"></a>##### THROUGHPUT

The probe tracker will show a graph of average throughputs.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`values()`](#com-jprofiler-api-controller-probevaluetype-values) | `ProbeValueType[]` |  |
| [`valueOf(String)`](#com-jprofiler-api-controller-probevaluetype-valueof-string) | `ProbeValueType` |  |
| [`toString()`](#com-jprofiler-api-controller-probevaluetype-tostring) | `String` |  |

<a id="com-jprofiler-api-controller-probevaluetype-values"></a>##### values()

```java
public static ProbeValueType[] values()
```

<a id="com-jprofiler-api-controller-probevaluetype-valueof-string"></a>##### valueOf(String)

```java
public static ProbeValueType valueOf(String name)
```

<a id="com-jprofiler-api-controller-probevaluetype-tostring"></a>##### toString()

```java
public String toString()
```

### <a id="com-jprofiler-api-controller-trackingoptions"></a>TrackingOptions

Import: `import com.jprofiler.api.controller.TrackingOptions;`

```java
public class TrackingOptions
```

Request tracking options for calling [`Controller.startCPURecording`](#com-jprofiler-api-controller-controller-startcpurecording-boolean-trackingoptions) and
[`Controller.startAllocRecording`](#com-jprofiler-api-controller-controller-startallocrecording-boolean-trackingoptions). See the help topic on request
tracking for more information.
After constructing an instance of this class, all request tracking options are set to `false`.

#### Methods

| Signature | Returns | Description |
|---|---|---|
| [`platformThread(boolean)`](#com-jprofiler-api-controller-trackingoptions-platformthread-boolean) | `TrackingOptions` | Determines if platform thread start should be tracked. |
| [`virtualThread(boolean)`](#com-jprofiler-api-controller-trackingoptions-virtualthread-boolean) | `TrackingOptions` | Determines if virtual thread start should be tracked. |
| [`executors(boolean)`](#com-jprofiler-api-controller-trackingoptions-executors-boolean) | `TrackingOptions` | Determines if executors should be tracked. |
| [`awt(boolean)`](#com-jprofiler-api-controller-trackingoptions-awt-boolean) | `TrackingOptions` | Determines if AWT should be tracked. |
| [`swt(boolean)`](#com-jprofiler-api-controller-trackingoptions-swt-boolean) | `TrackingOptions` | Determines if SWT should be tracked. |
| [`rmi(boolean)`](#com-jprofiler-api-controller-trackingoptions-rmi-boolean) | `TrackingOptions` | Determines if RMI should be tracked. |
| [`grpc(boolean)`](#com-jprofiler-api-controller-trackingoptions-grpc-boolean) | `TrackingOptions` | Determines if gRPC should be tracked. |
| [`http(boolean)`](#com-jprofiler-api-controller-trackingoptions-http-boolean) | `TrackingOptions` | Determines if http requests should be tracked. |
| [`remoteEjb(boolean)`](#com-jprofiler-api-controller-trackingoptions-remoteejb-boolean) | `TrackingOptions` | Determines if remote EJBs should be tracked. |
| [`kotlinCoroutines(boolean)`](#com-jprofiler-api-controller-trackingoptions-kotlincoroutines-boolean) | `TrackingOptions` | Determines if kotlin coroutines should be tracked. |
| [`isPlatformThread()`](#com-jprofiler-api-controller-trackingoptions-isplatformthread) | `boolean` | Returns if platform thread start is tracked. |
| [`isVirtualThread()`](#com-jprofiler-api-controller-trackingoptions-isvirtualthread) | `boolean` | Returns if virtual thread start is tracked. |
| [`isExecutors()`](#com-jprofiler-api-controller-trackingoptions-isexecutors) | `boolean` | Returns if executors are tracked. |
| [`isAwt()`](#com-jprofiler-api-controller-trackingoptions-isawt) | `boolean` | Returns if AWT is tracked. |
| [`isSwt()`](#com-jprofiler-api-controller-trackingoptions-isswt) | `boolean` | Returns if SWT is tracked. |
| [`isRmi()`](#com-jprofiler-api-controller-trackingoptions-isrmi) | `boolean` | Returns if RMI is tracked. |
| [`isGrpc()`](#com-jprofiler-api-controller-trackingoptions-isgrpc) | `boolean` | Returns if gRPC is tracked. |
| [`isHttp()`](#com-jprofiler-api-controller-trackingoptions-ishttp) | `boolean` | Returns if http requests are tracked. |
| [`isRemoteEjb()`](#com-jprofiler-api-controller-trackingoptions-isremoteejb) | `boolean` | Returns if remote EJBs are tracked. |
| [`isKotlinCoroutines()`](#com-jprofiler-api-controller-trackingoptions-iskotlincoroutines) | `boolean` | Returns if kotlin coroutines are tracked. |
| [`freeze()`](#com-jprofiler-api-controller-trackingoptions-freeze) | `TrackingOptions` | Make these tracking options unmodifiable. |

<a id="com-jprofiler-api-controller-trackingoptions-platformthread-boolean"></a>##### platformThread(boolean)

```java
public TrackingOptions platformThread(boolean threadStart)
```

Determines if platform thread start should be tracked.


**Parameters:**

- `threadStart` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-virtualthread-boolean"></a>##### virtualThread(boolean)

```java
public TrackingOptions virtualThread(boolean threadStart)
```

Determines if virtual thread start should be tracked.


**Parameters:**

- `threadStart` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-executors-boolean"></a>##### executors(boolean)

```java
public TrackingOptions executors(boolean executors)
```

Determines if executors should be tracked.


**Parameters:**

- `executors` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-awt-boolean"></a>##### awt(boolean)

```java
public TrackingOptions awt(boolean awt)
```

Determines if AWT should be tracked.


**Parameters:**

- `awt` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-swt-boolean"></a>##### swt(boolean)

```java
public TrackingOptions swt(boolean swt)
```

Determines if SWT should be tracked.


**Parameters:**

- `swt` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-rmi-boolean"></a>##### rmi(boolean)

```java
public TrackingOptions rmi(boolean rmi)
```

Determines if RMI should be tracked.


**Parameters:**

- `rmi` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-grpc-boolean"></a>##### grpc(boolean)

```java
public TrackingOptions grpc(boolean grpc)
```

Determines if gRPC should be tracked.


**Parameters:**

- `grpc` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-http-boolean"></a>##### http(boolean)

```java
public TrackingOptions http(boolean http)
```

Determines if http requests should be tracked.


**Parameters:**

- `http` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-remoteejb-boolean"></a>##### remoteEjb(boolean)

```java
public TrackingOptions remoteEjb(boolean remoteEjb)
```

Determines if remote EJBs should be tracked.


**Parameters:**

- `remoteEjb` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-kotlincoroutines-boolean"></a>##### kotlinCoroutines(boolean)

```java
public TrackingOptions kotlinCoroutines(boolean kotlinCoroutines)
```

Determines if kotlin coroutines should be tracked.


**Parameters:**

- `kotlinCoroutines` — the new value

**Returns:** this instance

<a id="com-jprofiler-api-controller-trackingoptions-isplatformthread"></a>##### isPlatformThread()

```java
public boolean isPlatformThread()
```

Returns if platform thread start is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isvirtualthread"></a>##### isVirtualThread()

```java
public boolean isVirtualThread()
```

Returns if virtual thread start is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isexecutors"></a>##### isExecutors()

```java
public boolean isExecutors()
```

Returns if executors are tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isawt"></a>##### isAwt()

```java
public boolean isAwt()
```

Returns if AWT is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isswt"></a>##### isSwt()

```java
public boolean isSwt()
```

Returns if SWT is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isrmi"></a>##### isRmi()

```java
public boolean isRmi()
```

Returns if RMI is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isgrpc"></a>##### isGrpc()

```java
public boolean isGrpc()
```

Returns if gRPC is tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-ishttp"></a>##### isHttp()

```java
public boolean isHttp()
```

Returns if http requests are tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-isremoteejb"></a>##### isRemoteEjb()

```java
public boolean isRemoteEjb()
```

Returns if remote EJBs are tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-iskotlincoroutines"></a>##### isKotlinCoroutines()

```java
public boolean isKotlinCoroutines()
```

Returns if kotlin coroutines are tracked.


**Returns:** the value

<a id="com-jprofiler-api-controller-trackingoptions-freeze"></a>##### freeze()

```java
public TrackingOptions freeze()
```

Make these tracking options unmodifiable. Further modification attempts will result in an
`UnsupportedOperationException`.


**Returns:** this instance

#### Constructors

| Signature | Description |
|---|---|
| [`TrackingOptions()`](#com-jprofiler-api-controller-trackingoptions-trackingoptions) | Create a new instance with no tracking types enabled. |

<a id="com-jprofiler-api-controller-trackingoptions-trackingoptions"></a>##### TrackingOptions()

```java
public TrackingOptions()
```

Create a new instance with no tracking types enabled.

#### Fields

| Field | Type | Description |
|---|---|---|
| [NONE](#com-jprofiler-api-controller-trackingoptions-none) | `TrackingOptions` | No request tracking types are enabled. |
| [PLATFORM_THREAD](#com-jprofiler-api-controller-trackingoptions-platform-thread) | `TrackingOptions` | Only track platform thread start, same as `new TrackingOptions().platformThreadStart(true)`. |
| [EXECUTORS](#com-jprofiler-api-controller-trackingoptions-executors) | `TrackingOptions` | Only track executors, same as `new TrackingOptions().executors(true)`. |
| [AWT](#com-jprofiler-api-controller-trackingoptions-awt) | `TrackingOptions` | Only track AWT, same as `new TrackingOptions().awt(true)`. |
| [SWT](#com-jprofiler-api-controller-trackingoptions-swt) | `TrackingOptions` | Only track SWT, same as `new TrackingOptions().swt(true)`. |
| [RMI](#com-jprofiler-api-controller-trackingoptions-rmi) | `TrackingOptions` | Only track RMI, same as `new TrackingOptions().rmi(true)`. |
| [GRPC](#com-jprofiler-api-controller-trackingoptions-grpc) | `TrackingOptions` | Only track gRPC, same as `new TrackingOptions().grpc(true)`. |
| [REMOTE_EJB](#com-jprofiler-api-controller-trackingoptions-remote-ejb) | `TrackingOptions` | Only track remote EJBs, same as `new TrackingOptions().remoteEjb(true)`. |
| [HTTP](#com-jprofiler-api-controller-trackingoptions-http) | `TrackingOptions` | Only track http requests, same as `new TrackingOptions().http(true)`. |
| [KOTLIN_COROUTINES](#com-jprofiler-api-controller-trackingoptions-kotlin-coroutines) | `TrackingOptions` | Only track kotlin coroutines, same as `new TrackingOptions().kotlinCoroutines(true)`. |
| [VIRTUAL_THREAD](#com-jprofiler-api-controller-trackingoptions-virtual-thread) | `TrackingOptions` | Only track virtual thread start, same as `new TrackingOptions().virtualThread(true)`. |

<a id="com-jprofiler-api-controller-trackingoptions-none"></a>##### NONE

```java
public static final TrackingOptions NONE
```

No request tracking types are enabled. This is the same as [`constructing`](#com-jprofiler-api-controller-trackingoptions-trackingoptions) a new
object without calling any further methods.

<a id="com-jprofiler-api-controller-trackingoptions-platform-thread"></a>##### PLATFORM_THREAD

```java
public static final TrackingOptions PLATFORM_THREAD
```

Only track platform thread start, same as `new TrackingOptions().platformThreadStart(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-executors"></a>##### EXECUTORS

```java
public static final TrackingOptions EXECUTORS
```

Only track executors, same as `new TrackingOptions().executors(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-awt"></a>##### AWT

```java
public static final TrackingOptions AWT
```

Only track AWT, same as `new TrackingOptions().awt(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-swt"></a>##### SWT

```java
public static final TrackingOptions SWT
```

Only track SWT, same as `new TrackingOptions().swt(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-rmi"></a>##### RMI

```java
public static final TrackingOptions RMI
```

Only track RMI, same as `new TrackingOptions().rmi(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-grpc"></a>##### GRPC

```java
public static final TrackingOptions GRPC
```

Only track gRPC, same as `new TrackingOptions().grpc(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-remote-ejb"></a>##### REMOTE_EJB

```java
public static final TrackingOptions REMOTE_EJB
```

Only track remote EJBs, same as `new TrackingOptions().remoteEjb(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-http"></a>##### HTTP

```java
public static final TrackingOptions HTTP
```

Only track http requests, same as `new TrackingOptions().http(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-kotlin-coroutines"></a>##### KOTLIN_COROUTINES

```java
public static final TrackingOptions KOTLIN_COROUTINES
```

Only track kotlin coroutines, same as `new TrackingOptions().kotlinCoroutines(true)`.

<a id="com-jprofiler-api-controller-trackingoptions-virtual-thread"></a>##### VIRTUAL_THREAD

```java
public static final TrackingOptions VIRTUAL_THREAD
```

Only track virtual thread start, same as `new TrackingOptions().virtualThread(true)`.
