Custom OrderProcessed event, CPU/allocation/lock workloads, a diagnostic endpoint over the JVM's live FlightRecorder state, a JUnit test using the jdk.jfr.Recording API, and nine captured recordings (flagship, mid-flight snapshot, isolated vs concurrent threshold comparisons, and a real dump+stop duplication bug) with their docs/output/*.txt transcripts.
40 lines
2.2 KiB
Plaintext
40 lines
2.2 KiB
Plaintext
Top stack frames from jdk.ExecutionSample, live-demo.jfr, during six concurrent
|
|
GET /api/cpu/fibonacci?n=38 calls, aggregated by the top (leaf) frame only.
|
|
|
|
$ jfr print --events jdk.ExecutionSample --stack-depth 1 recordings/live-demo.jfr \
|
|
| grep -A1 stackTrace | grep -v 'stackTrace\|^--' | sed 's/^\s*//' | sort | uniq -c | sort -rn
|
|
|
|
62 com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
13 com.ankurm.jfr.service.WorkloadService.churnAllocations(int) line: 56
|
|
9 com.ankurm.jfr.service.WorkloadService.churnAllocations(int) line: 52
|
|
2 jdk.internal.util.DecimalDigits.uncheckedGetCharsLatin1(int, int, byte[]) line: 168
|
|
1 org.apache.tomcat.util.net.NioEndpoint$Poller.run() line: 941
|
|
1 org.apache.tomcat.util.http.MimeHeaders.addValue(byte[], int, int) line: 327
|
|
1 org.apache.catalina.mapper.Mapper.compareIgnoreCase(CharChunk, int, int, String) line: 1401
|
|
1 org.apache.catalina.core.ApplicationFilterFactory.createFilterChain(ServletRequest, Wrapper, Servlet) line: 75
|
|
1 jdk.internal.util.DecimalDigits.stringSize(int) line: 101
|
|
1 jdk.internal.misc.Unsafe.allocateUninitializedArray(Class, int) line: 1396
|
|
1 java.util.concurrent.locks.LockSupport.unpark(Thread) line: 181
|
|
1 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.signalAll() line: 1590
|
|
1 java.util.Arrays.copyOf(Object[], int) line: 3478
|
|
1 java.nio.Buffer.position(int) line: 325
|
|
1 java.lang.invoke.DirectMethodHandle.allocateInstance(Object) line: 500
|
|
|
|
total jdk.ExecutionSample events in recording: 98
|
|
fibonacci() share of samples: 62 / 98 = 63.3%
|
|
|
|
$ jfr print --events jdk.ExecutionSample recordings/live-demo.jfr | head -13
|
|
jdk.ExecutionSample {
|
|
startTime = 09:59:03.699 (2026-10-01)
|
|
sampledThread = "http-nio-8080-exec-1" (javaThreadId = 30)
|
|
state = "STATE_RUNNABLE"
|
|
stackTrace = [
|
|
com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
com.ankurm.jfr.service.WorkloadService.fibonacci(int) line: 40
|
|
...
|
|
]
|
|
}
|