Automated Analysis

このページは日本語には対応しておりません。随時翻訳に取り組んでいます。
翻訳に関してご質問やご意見ございましたら、お気軽にご連絡ください
Join the Preview!

Automated Analysis is in Preview.

Request Access

Overview

Automated Analysis automatically detects performance issues in your applications using Continuous Profiler data and provides actionable insights for resolution. When an issue is detected, Automated Analysis provides:

  • A high-level summary explaining the issue and why it matters
  • Contextual insights from profiling data (for example, affected methods, packages, or processes)
  • Recommended next steps to help you resolve the issue

This reduces the profiling expertise needed to identify and resolve performance issues in your applications that might otherwise go unnoticed.

The Profiler Thread Time line showing a Thrown Exception insight

Explore insights

Access Automated Analysis from the Profile explorer. Insights are displayed:

  • In the Insights section at the top of the page

    The Automated Analysis banner displaying insights detected for a given service

  • Within a flame graph view

    The Automated Analysis column displaying insights detected for a given service within a flamegraph

  • Within a timeline view

    The Automated Analysis column displaying insights detected for a given service within a timeline

Click an insight to see a high-level summary that explains the issue, contextual insights from profiling data, and recommended next steps.

Expanded Profiling Insights showing the details of a detected Issue

The Insights list page provides a centralized view of all detected issues across your services. It helps teams understand what’s happening in their environments, prioritize what to investigate, and track whether recurring problems are improving over time.

The list page showing detected insights across services

Each row represents an insight type, summarizing:

  • Service and runtime affected
  • Insight type (for example, GC Pauses or High Lock Contention)
  • Severity (for example, Info or Warning)

You can filter insights by runtime, service, or environment to narrow the list to the most important insights. Teams often use this view to identify patterns, such as multiple services affected by the same inefficiency. Clicking on an insight opens its detail panel.

Supported insights

Automated Analysis supports finding the following insights:

NamePriorityDescription
Virtual Thread PinningHighTriggers if virtual threads were pinned to their carrier threads for a prolonged time.
Virtual Thread Submit FailureHighTriggers if virtual threads could not be scheduled for execution.
Allocation StallMediumTriggers if a thread had to be paused due to insufficient available memory.
Blocking VMOperationsMediumTriggers if blocking VM operations (or combination of operations close in time) take more than 5% of a profile.
Code Cache SizeMediumTriggers if the Code Cache was filled during a profile.
CPU BurstMediumTriggers if there is more than 75% CPU utilization across a 10s window.
CPU Burst SaturationMediumTriggers if there is at least 1 second where CPU utilization is at 100%.
Deadlocked Threads DetectedMediumTriggers if max number of deadlocked threads over query context is greater than 0.
Explicit GCMediumTriggers if there are System.gc() calls.
GC Pause Peak DurationMediumTriggers if at least one GC pause took more than one second.
GC PausesMediumTriggers if more than 10% of time was spent in GC pauses.
GC SetupMediumTriggers when one of the following is detected: serial GC used on a multi-core machine, parallel GC on a single-core machine, more GC threads configured than available cores, or parallel GC configured to run in one thread.
Stackdepth SettingMediumTriggers if events were found with truncated stacktraces which may make it hard to understand profiling data.
Thrown ExceptionsMediumTriggers when the rate of thrown (caught and uncaught) exceptions per minute goes above a threshold (defaults to 10K).
VMOperation Peak DurationMediumTriggers if a blocking VM operation (or combination of operations close in time) takes more than two seconds. Reports details about the operation with the highest duration.
VMOperations RatioMediumTriggers if the total amount of blocking VM operations is a significant part of a 60 second window.
Command Line Options CheckLowTriggers if undocumented, deprecated, or non-recommended option flags were detected.
Context SwitchesLowTriggers if the rate of context switches on the underlying system is greater than 50k per second.
DebugNonSafepointsLowTriggers if a service is run with potentially less accurate settings for the profiler.
Duplicated FlagsLowTriggers if duplicate flags were provided to the runtime (for example, -Xmx2g -Xmx5g). This is a problem as it may lead to changes not having the expected effect.
GC OverheadLowTriggers if more than 20% of CPU time is related to GC activities or allocation overhead.
Head of line blockingLowTriggers if a queue event gets stuck behind the given activity.
High Lock ContentionLowTriggers if there is a high ratio of time waiting on locks to time spent on-CPU.
Primitive Value BoxingLowTriggers if more than 5% of CPU time was spent converting values between primitive and object values.
Thread Pool SizeLowTriggers if a thread pool is CPU-bound but is set to a size larger than the number of available cores.
Unbalanced ParallelismLowTriggers if at least one peer thread is performing less than half the work of another in the same span.
NamePriorityDescription
High Lock ContentionLowTriggers if there is a high ratio of time waiting on locks to time spent on-CPU.
NamePriorityDescription
GC OverheadLowTriggers if more than 20% of CPU time is related to GC activities or allocation overhead.
High Lock ContentionLowTriggers if there is a high ratio of time waiting on locks to time spent on-CPU.
NamePriorityDescription
GC OverheadLowTriggers if more than 20% of CPU time is related to GC activities or allocation overhead.
NamePriorityDescription
Event Loop BlockingMediumTriggers if callbacks were running for an extended period of time on the Main Event Loop thread.
GC OverheadLowTriggers if more than 20% of CPU time is related to GC activities or allocation overhead.
Libuv Pool OverloadLowTriggers if there were more concurrent tasks scheduled to run on the libuv thread pool than it has threads.
NamePriorityDescription
Sync-over-Async BlockingMediumTriggers if async functions are detected in CPU samples.
Excessive String ConcatenationLowTriggers if there is a high ratio of CPU time spent concatenating strings.

Further reading