- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- Solving performance problems
- CPU profiling
- Threads
- Deadlock detector
- Memory profiling
- Garbage collection
- Monitor profiling
- Exception profiling
- Probes: monitor events of various kinds
- Events in user interface
- Event inspections
- Built-in probes
- Probe classes
- Monitoring method invocation events
- Probe class annotation @MethodPattern
- Callback onEnter()
- Callback onReturn()
- Callbacks onUncaughtException() and onUncaughtExceptionExt()
- Parameter annotation @Param
- Parameter annotation @Params
- Parameter annotation @This
- Parameter annotation @ClassRef
- Parameter annotation @MethodName
- Parameter annotation @MethodParameterTypes
- Parameter annotation @MethodSignature
- Parameter annotation @OnEnterResult
- Parameter annotation @ReturnValue
- Parameter annotation @ThrownException
- Probe application rules
- Data storage
- Performance Charts
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Summary, snapshot annotation, automatic deobfuscation
- Time measurement (CPU time, wall time)
- Filters
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler Java API
- Profiler HTTP API
- Command line tool to control profiling
- Settings
- FAQ: How to profile in my scenario?
Callback method parameter annotation @Params
Callback parameter annotated with @Params
provides the values of all parameters passed to the instrumented method.
In which callbacks can be used
Parameter annotated with @Params
can be used in any callback.
Declaration type
Parameter annotated with @Params
must be declared as java.lang.Object[]
.
Description
Parameter annotated with @Params
will be assigned with a newly created array
with length equal to the number of method parameters.
First parameter is stored in the array at index 0, second parameter - at index 1 etc.
If instrumented method has no parameters, parameter annotated with @Params
will be assigned with an empty array.
Parameters of reference types will be stored as is. Parameters of primitive types will be stored boxed.
Note, that each time a callback with parameter annotated with @Params
is invoked, a new array is created.
For performance considerations,
use @Param({number}) instead whenever possible.