Allocation pressure from three concurrent GET /api/alloc/churn?iterations=400000 calls, captured by jdk.ObjectAllocationSample in recordings/live-demo.jfr. $ jfr print --events jdk.ObjectAllocationSample recordings/live-demo.jfr | grep objectClass \ | sed 's/^\s*//' | sort | uniq -c | sort -rn 154 objectClass = java.lang.Object[] (classLoader = bootstrap) 111 objectClass = byte[] (classLoader = bootstrap) 21 objectClass = java.util.ArrayList (classLoader = bootstrap) 19 objectClass = java.lang.String (classLoader = bootstrap) 4 objectClass = java.time.Instant (classLoader = bootstrap) 2 objectClass = java.io.EOFException (classLoader = bootstrap) 1 objectClass = java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode (classLoader = bootstrap) 1 objectClass = java.util.concurrent.ConcurrentHashMap$KeyIterator (classLoader = bootstrap) 1 objectClass = java.util.LinkedHashMap$Entry (classLoader = bootstrap) 1 objectClass = java.util.HashSet (classLoader = bootstrap) Top allocating stack frames (--stack-depth 1), same recording: 153 java.util.ArrayList.(int) line: 157 58 java.lang.String.encodeUTF8(byte, byte[], boolean) line: 1305 49 jdk.internal.misc.Unsafe.allocateUninitializedArray(Class, int) line: 1396 21 com.ankurm.jfr.service.WorkloadService.churnAllocations(int) line: 55 18 com.ankurm.jfr.service.WorkloadService.churnAllocations(int) line: 53 4 java.time.Instant.create(long, int) line: 416 4 java.nio.HeapByteBuffer.(int, int, MemorySegment) line: 75 The two biggest allocators by class (Object[] and byte[]) both trace back to one line in WorkloadService.churnAllocations: `new ArrayList<>(bytes.length)` followed by boxing each byte into the list. Object[] is the list's own backing array (resized as autoboxed Byte objects are added); byte[] is `s.getBytes()`. Total events: 317 (jdk.ObjectAllocationSample, throttled to 300/s by the "profile" settings used for this recording -- see docs/output/08-concurrent-recordings- shared-threshold.txt for why throttle and threshold settings between concurrently active recordings interact in a way that is easy to misread).