public class PauseDetails
extends java.lang.Object
A PauseDetails object represents a pause event impacting all the threads in a running Java virtual machine and includes a timestamp specifying the time since the launch of the Java virtual machine process, the duration of the pause, and the reason for the pause (plus additional, optional, very detailed information).
Instances of the PauseDetails class are constructed when a pause occurs. A timestamp representing the wall clock time when the pause occurred, the duration of the pause and the reason for the pause are collected. The timestamp is the number of seconds since the launch of the Java virtual machine. The duration of the pause is in units of seconds. The reason field is a text string describing the reason for the pause. The content of the String that represents the reason for the pause is specific to the implementation of the Java virtual machine.
PauseDetails also has additional, optional, details of the time required for individual steps executed during the pause. The times for the individual steps make it easy to identify potential areas for reducing the total pause duration. Generally, the sum of the additional detailed timing information’s times should add up to the total pause duration.
A PauseDetails object has twelve attributes, supplying the values for three is mandatory:
elapsedTimeSinceJVMStartSec | Wall clock time when the pause occurred in units of elapsed seconds since the start of the JVM. |
durationSec | Total pause duration in seconds. |
reason | Reason for the pause. |
Time Required for Individual Steps | |
initialThreadsLockAcquireTimeSec | Time required to obtain the threads lock at the beginning of this pause’s processing. |
collectorSuspendTimeSec | Time required to suspend any running collector as we prepare to suspend the process’s threads. |
threadsNotifyTimeSec | Time required to notify all of the running threads to suspend themselves. |
timeForThreadsToSuspendSec | Time spent waiting for all of the threads to suspend. The time returned
from timeForThreadsToSuspendSec
is also commonly known as Time To Safepoint.
|
collectorSecondSuspendTimeSec | If the first suspend of any collection in progress done in
collectorSuspendTimeSec did not succeed then we need to try
again to suspend the collection or collections in progress.
collectorSecondSuspendTimeSec is the amount of time required
to do the suspension.
|
operationTimeSec | Time required to perform the operation for which suspension of all the threads is required. The interval reported begins when all of the threads have been suspended and ends when the operation has been completed. |
postOperationCleanupTimeSec | Time required for cleanup activities just prior to resumption of thread execution. |
timeToWakeupThreadsSec | Time required for all of the threads to resume execution after the notification of each thread to wakeup and resume execution. |
pauseId | Unique numeric value that identifies this pause. |
Constructor and Description |
---|
PauseDetails(double elapsedTimeSinceJVMStartSec,
double durationSec,
java.lang.String reason,
double initialThreadsLockAcquireTimeSec,
double collectorSuspendTimeSec,
double threadsNotifyTimeSec,
double timeForThreadsToSuspendSec,
double collectorSecondSuspendTimeSec,
double operationTimeSec,
double postOperationCleanupTimeSec,
double timeToWakeupThreadsSec,
long pauseId)
Constructs a PauseDetails object using a String reason.
|
Modifier and Type | Method and Description |
---|---|
static PauseDetails |
from(javax.management.openmbean.CompositeData cd)
Returns a PauseDetails object constructed with the
values in the CompositeData parameter.
|
double |
getCollectorSecondSuspendTimeSec()
Time required to redo the suspend of a collection in progress if the first
suspend (see
getCollectorSuspendTimeSec ) did not result in a suspension
(seldom required to do this a second time). |
double |
getCollectorSuspendTimeSec()
Time required to suspend any collector running as we prepare for
the pause.
|
double |
getDurationSec()
Total duration of the pause.
|
double |
getElapsedTimeSinceJVMStartSec()
Wall clock time when the pause started.
|
double |
getInitialThreadsLockAcquireTimeSec()
Time required to obtain the threads lock at the beginning of this
pause’s processing.
|
double |
getOperationTimeSec()
Time required to perform the operation for which the pause was required.
|
long |
getPauseId()
Numeric identifier of this pause.
|
double |
getPostOperationCleanupTimeSec()
Time required for cleanup activities just prior to resumption of
thread execution.
|
java.lang.String |
getReason()
Reason for the pause.
|
double |
getThreadsNotifyTimeSec()
Time required to notify all of the running threads to suspend themselves.
|
double |
getTimeForThreadsToSuspendSec()
Time spent waiting for all of the threads to suspend (time to safepoint).
|
double |
getTimeToWakeupThreadsSec()
Time for all of the threads to resume execution after the notification to wakeup.
|
java.lang.String |
toString()
Returns a String object with the information describing this pause time.
|
public PauseDetails(double elapsedTimeSinceJVMStartSec, double durationSec, java.lang.String reason, double initialThreadsLockAcquireTimeSec, double collectorSuspendTimeSec, double threadsNotifyTimeSec, double timeForThreadsToSuspendSec, double collectorSecondSuspendTimeSec, double operationTimeSec, double postOperationCleanupTimeSec, double timeToWakeupThreadsSec, long pauseId)
Constructs a PauseDetails object using a String reason.
elapsedTimeSinceJVMStartSec
- the time when the pause started (elapsed seconds
since Java virtual machine process launch)durationSec
- the total pause duration (seconds)reason
- the reason for the pauseinitialThreadsLockAcquireTimeSec
- time required to obtain the threads lock at the beginning of this pause’s processingcollectorSuspendTimeSec
- time required to suspend any collector running as we prepare for the pausethreadsNotifyTimeSec
- time required to notify all of the running threads to suspend themselvestimeForThreadsToSuspendSec
- time spent waiting for all of the threads to suspend (time to safepoint)collectorSecondSuspendTimeSec
- time required to redo the suspend of a collection in progress if the previous suspend did not work (seldom required)operationTimeSec
- time required to perform the operation for which the pause is requiredpostOperationCleanupTimeSec
- time required for cleanup activities just prior to resumption of thread executiontimeToWakeupThreadsSec
- time that represents the longest interval required for a thread to wakeup after notificationpauseId
- numeric identifier of this pausejava.lang.IllegalArgumentException
- if
public static PauseDetails from(javax.management.openmbean.CompositeData cd)
Returns a PauseDetails object constructed with the values in the CompositeData parameter.
The CompositeData input parameter must contain the following values:
Attribute Name Type elapsedTimeSinceJVMStartSec java.lang.Double durationSec java.lang.Double reason java.lang.String initialThreadsLockAcquireTimeSec java.lang.Double collectorSuspendTimeSec java.lang.Double threadsNotifyTimeSec java.lang.Double timeForThreadsToSuspendSec java.lang.Double collectorSecondSuspendTimeSec java.lang.Double operationTimeSec java.lang.Double postOperationCleanupTimeSec java.lang.Double timeToWakeupThreadsSec java.lang.Double pauseId java.lang.Long
cd
- The CompositeData
object from which to retrieve the required PauseDetails
values.java.lang.IllegalArgumentException
- if cd does not contain
PauseDetails values with the attributes described
above.public double getCollectorSecondSuspendTimeSec()
getCollectorSuspendTimeSec
) did not result in a suspension
(seldom required to do this a second time).public double getCollectorSuspendTimeSec()
public double getDurationSec()
public double getElapsedTimeSinceJVMStartSec()
public double getInitialThreadsLockAcquireTimeSec()
public double getOperationTimeSec()
public long getPauseId()
public double getPostOperationCleanupTimeSec()
public java.lang.String getReason()
String
describing the reason for the pause.public double getThreadsNotifyTimeSec()
public double getTimeForThreadsToSuspendSec()
public double getTimeToWakeupThreadsSec()
public java.lang.String toString()
toString
in class java.lang.Object
PauseDetails
object. Submit a bug or feature request
Copyright © 2015-2017, Azul Systems, Inc. All rights reserved.
Azul Systems and Zing are registered trademarks of Azul Systems, Inc.