everything.glossary
glossary
285 terms, one line each. every one links to the chapter that explains it properly.
#
- <clinit>
- a class's static initializer: static fields and static blocks, run once on first active use. read more
a
- ABA problem
- a value goes A → B → A, and a CAS that only checks for A can't tell anything happened. read more
- access order
- a LinkedHashMap mode where every get moves the entry to the end, so the head is least recently used. read more
- algebraic data type
- data built from products (records: this and that) and sums (sealed interfaces: this or that). read more
- amortized O(1)
- constant on average over many calls, even though an occasional call (like a resize) costs O(n). read more
- annotation
- metadata on code. @Override, @Deprecated, or your own. read more
- annotation processor
- a plugin that runs inside javac, reads declarations and can generate new source files, in rounds. read more
- AOT cache
- Leyden's startup archive: classes already loaded and linked, plus method profiles, from a training run. java 24+. read more
- AQS
- AbstractQueuedSynchronizer: a volatile int plus a queue of parked threads. most j.u.c locks are built on it. read more
- async-profiler
- an open-source java profiler that samples at the real instruction via OS signals, so it avoids safepoint bias. read more
- auto-vectorization
- C2 turning a simple array loop into SIMD instructions by itself. it can't for float reductions, which is where the Vector API helps. read more
- autoboxing
- the compiler quietly converting int ↔ Integer for you. read more
- AutoCloseable
- the one-method interface that lets an object go in a try-with-resources. read more
b
- BigDecimal
- an exact decimal number: an unscaled BigInteger plus a scale. what money should be. read more
- binary heap
- a tree where every parent beats its children, stored level by level in an array. PriorityQueue. read more
- bootstrap method
- the method the JVM calls the first time an invokedynamic runs. it returns the CallSite the instruction is linked to. read more
- bounded type parameter
- <T extends Number>: callers may only pick Number or a subtype, and the code can call Number's methods on T. read more
- branch prediction
- the CPU guessing which way an if goes so its pipeline doesn't stall. random branches mispredict and cost time. read more
- breakpoint
- a line where the debugger pauses the program so you can look around. read more
- bridge method
- a synthetic method javac adds so overriding still works after erasure, like compareTo(Object) calling your compareTo(Name). read more
- bucket
- one slot of a hash table's array. keys whose hashes map to the same index share it. read more
- bytecode
- the instruction set of the JVM. what javac produces, what the JVM runs. read more
c
- C1 / C2
- the JVM's two JIT compilers. C1 compiles fast, C2 compiles well. read more
- cache line
- the unit memory moves in between RAM and the CPU caches, 64 bytes on most CPUs. read in order and the prefetcher keeps up. read more
- canonical constructor
- the record constructor that takes every component in order. the compact form validates without repeating the parameters or assignments. read more
- carrier class
- an exploratory generalization of records from amber's 2026 design note: a component list without records' restrictions. read more
- carrier thread
- the platform thread a virtual thread is currently mounted on. read more
- CAS
- compare-and-swap. an atomic cpu instruction: set it to B, but only if it's still A. read more
- casting
- converting between types. widening (int → long) is automatic, narrowing (long → int) needs a cast and can lose bits. read more
- catastrophic backtracking
- a regex that can match the same text many ways, making a failing match exponential. read more
- CDS
- class data sharing: parsed class metadata saved to an archive and mapped in at startup. read more
- check-then-act
- deciding on a value, then acting after it may already have changed. a race even when each call is thread-safe. read more
- checked exception
- an exception the compiler makes callers catch or declare. Exception, minus RuntimeException. read more
- circular buffer
- an array used as a ring: head and tail indexes wrap around, so nothing ever shifts. ArrayDeque. read more
- class file
- the binary file javac produces. starts with CAFEBABE. read more
- class file version
- the major version in a .class header. java version + 44, so java 25 is 69. read more
- class loader
- the object that finds a class's bytes and turns them into a Class. read more
- class loader leak
- one reference from long-lived code into an undeployed app keeps its class loader, and so every one of its classes, alive. read more
- Class-File API
- java.lang.classfile, java 24: parse, build and transform class files with elements, builders and transforms. read more
- classpath
- the list of folders and jars the JVM searches for classes. the current directory by default. read more
- code reflection
- project babylon's idea: a library reads a java method as a code model and transforms it, say into a GPU kernel. research, no JEP. read more
- collector
- a recipe for folding a stream into a result: a list, a map, a string. read more
- common pool
- the JVM-wide ForkJoinPool that every parallel stream shares. cores minus one threads. read more
- compact object headers
- an 8-byte object header with the class pointer folded into the mark word. product in 25, default in 27. read more
- compact source file
- a .java file with methods and fields but no class around them. java 25. read more
- compact strings
- since java 9 a String stores one byte per char when every char fits in latin-1, two otherwise. read more
- CompletableFuture
- a future you attach stages to (thenApply, thenCompose, allOf) instead of blocking on it. read more
- composition
- holding an object in a field and forwarding calls to it, instead of extending its class. read more
- compressed oops
- storing references in 32 bits by shifting 8-byte-aligned addresses. works for heaps up to about 32 GB. read more
- condenser
- leyden's long-term idea: a transformation that shifts work ahead of time in exchange for constraints you choose. a design note, not a feature. read more
- constant pool
- the numbered table of names, types and literals at the front of a class file. most of the file points into it. read more
- constructor
- the code new runs on a freshly zeroed object. same name as the class, no return type, never inherited. read more
- continuation
- a piece of code that can pause itself (yield) and be resumed later from the same spot. every virtual thread runs inside one. read more
- coordinated omission
- a load tool that waits for each response stops sending while the system is slow, so the slow period is never measured. read more
- copy-on-write
- every write copies the whole backing array, so readers iterate a stable snapshot with no locking. read more
- covariant arrays
- a String[] is an Object[], so every array store is checked at run time and can throw ArrayStoreException. read more
- CRaC
- coordinated restore at checkpoint: save a warmed-up JVM process to disk and restore it in milliseconds. vendor builds on linux, not mainline. read more
d
- data-oriented programming
- modelling data as immutable records under sealed interfaces, with behaviour in exhaustive pattern-matching switches. read more
- dead code elimination
- the JIT deleting work whose result nobody uses. the reason a timing loop can report 0 ns. read more
- deadlock
- two or more threads each waiting for a lock the other holds. forever. read more
- default method
- an interface method with a body. implementers get it unless they override it. java 8. read more
- defensive copy
- copying a mutable argument or return value so callers can't change your object's state behind its back. read more
- deoptimization
- the JVM throwing away compiled code when an assumption it made turns out wrong. read more
- derived record creation
- the proposed `record with { x = 0; }` expression: a copy of a record with some components changed. JEP 468, a candidate. read more
- diamond problem
- inheriting the same method from two places. java's rules: class wins, then the more specific interface, else you must override. read more
- direct buffer
- a ByteBuffer whose bytes live outside the heap, freed only when the GC collects its small heap object. capped by -XX:MaxDirectMemorySize. read more
- dominance
- a switch case that can never match because an earlier case always matches first. a compile error, not a warning. read more
- dominator tree
- a tree of objects where each parent is on every path from the GC roots to its children. sorted by retained size, it points at leaks. read more
- downstream collector
- a collector that runs inside each group of another, like counting() in groupingBy. read more
- DST gap
- local times that never happen when clocks jump forward. java shifts them forward. read more
- dynamic constant
- a constant pool entry computed by a bootstrap method on first ldc, then cached. java 11, JEP 309. read more
- dynamic dispatch
- picking which override to run at runtime, from the object's actual class. read more
- dynamic proxy
- an object generated at runtime that implements given interfaces and sends every call to one InvocationHandler. read more
e
- effectively final
- a local that's never reassigned after it's set. the only kind a lambda may capture. read more
- enum
- a final class with a fixed set of singleton instances, one per constant, created at class init. read more
- EnumSet
- a set of enum constants stored as bits in a long, one bit per ordinal. read more
- escape analysis
- the JIT proving an object never leaves a method, so it doesn't need the heap. read more
- exception chaining
- wrapping a lower-level exception as the cause of a new one, so the log keeps the root. read more
- exception table
- per-method rows of from, to, target, type in the class file. how the JVM finds a catch. read more
- exhaustive switch
- a switch that covers every possible input. pattern switches must be; over a sealed type, a case per subtype is enough. read more
- expression problem
- classes make new types easy and new operations hard; switches over sealed data make it the other way around. read more
f
- fail-fast
- iterators that throw ConcurrentModificationException when the collection changes under them. read more
- false sharing
- two threads writing different variables that share a cpu cache line, slowing each other down. read more
- FFM
- the foreign function and memory api. call C and manage off-heap memory from java. read more
- field hiding
- a subclass field with the same name as a parent's. both exist in the object; the variable's declared type picks one. read more
- flame graph
- all sampled stacks merged into one picture: width is share of samples, height is call depth. the x axis is not time. read more
- flatMap
- turns each element into a stream of zero or more elements and splices them into one stream. read more
- flattening
- storing a value object's fields directly inside an array or field instead of a pointer to a separate object. valhalla's payoff. read more
- flexible constructor bodies
- statements before super(...) or this(...): validate, prepare arguments and set your own fields before the superclass runs. java 25. read more
- flow scoping
- a pattern variable exists exactly where the compiler can prove the match succeeded, even after if (!(o instanceof T t)) return; read more
- fragile base class
- a subclass breaking when its superclass changes, because overriding couples it to the parent's implementation. read more
- fully qualified name
- a class's real name, package included: java.util.ArrayList. imports are just shorthand for it. read more
- functional interface
- an interface with exactly one abstract method. lambdas target these. read more
g
- G1
- the garbage-first collector. region-based, the default since java 9. read more
- garbage collection
- finding objects nothing can reach anymore, and reusing their memory. read more
- gatherer
- a custom intermediate stream operation. java 24. read more
- GC overhead limit
- Parallel GC's rule: more than 98% of time in GC while freeing under 2% of the heap throws OutOfMemoryError: GC overhead limit exceeded. read more
- GC root
- a starting point for reachability: locals on stacks, statics, JNI handles. read more
- generational hypothesis
- most objects die young. the reason heaps are split into young and old. read more
- generics
- type parameters like List<String>. checked at compile time, erased at runtime. read more
- guard
- a when clause on a switch case: case Integer i when i > 0. the case only matches if the pattern and the condition both hold. read more
h
- handshake
- a JVM operation that stops just one thread at its next poll instead of all of them. java 10. read more
- happens-before
- the memory model's guarantee that one action's effects are visible to another. read more
- hash collision
- two different keys landing in the same bucket. guaranteed to happen; the table chains them. read more
- hashCode
- an int summary of an object. equal objects must have equal hash codes. read more
- heap
- the shared memory where every object lives. cleaned up by the garbage collector. read more
- heap dump
- a snapshot of every object in the heap and every reference between them, in an .hprof file. how you find leaks. read more
- heap pollution
- a variable of a parameterized type pointing at an object that isn't that type. caused by raw types, unchecked casts, generic varargs. read more
- helpful NullPointerException
- since java 14, NPE messages name exactly what was null. read more
i
- identity
- the starting value of a reduction, one that changes nothing: 0 for +, 1 for *. read more
- IEEE 754
- the binary floating-point standard behind float and double. why 0.1 + 0.2 != 0.3. read more
- immutable
- can't change after construction. String, Integer, records (shallowly). read more
- incubator module
- an early, changeable API in a jdk.incubator.* module, enabled with --add-modules. the vector API has been one since java 16. read more
- inlining
- the JIT pasting a called method's body into the caller. the mother of all optimizations. read more
- instance initializer
- a bare { } block in a class body. javac pastes it into every constructor that calls super(...). read more
- instance main method
- a main that isn't static. the launcher creates the object first. java 25. read more
- integer cache
- Integer.valueOf reuses objects for -128..127, which is why == works there and nowhere else. read more
- integer overflow
- int or long math that doesn't fit wraps around silently. Integer.MAX_VALUE + 1 is Integer.MIN_VALUE. read more
- integrator
- the part of a gatherer that sees each element, pushes results downstream and can stop the stream. read more
- interface
- a type that only describes what something can do. can have default methods since java 8. read more
- intermediate operation
- a lazy stream step like filter or map. it only adds a stage, no work happens yet. read more
- intrinsic
- a JDK method the JIT replaces with hand-written machine code, like System.arraycopy or Integer.bitCount. read more
- invariance
- List<Integer> is not a List<Number>, even though Integer is a Number. generics are invariant, arrays are covariant. read more
- invokedynamic
- a bytecode whose call target is decided at runtime by a bootstrap method. read more
- IO.println
- java.lang.IO: println, print and readln for simple console programs, in every file without an import. java 25. read more
- itable
- a per-class table of method pointers grouped by interface, used by invokeinterface. read more
j
- jagged array
- a 2d array whose rows have different lengths. possible because int[][] is an array of separate arrays. read more
- java memory model
- the rules (JLS 17.4) for when one thread's writes are guaranteed visible to another. read more
- JAVA_HOME
- an environment variable pointing at one JDK's folder. build tools and IDEs read it, your shell doesn't. read more
- javac
- the java compiler. .java in, .class out. read more
- javap
- the JDK's class file disassembler. javap -c shows the bytecode javac produced. read more
- jcstress
- the OpenJDK harness that runs tiny concurrent programs billions of times and counts every outcome. read more
- JDK
- java development kit. the JVM plus javac, jar, jshell and the rest of the tools. read more
- JDK distribution
- one vendor's build of OpenJDK. same code, different support, patches and license. read more
- JDWP
- java debug wire protocol. how a debugger talks to a running JVM over a socket. read more
- JEP
- JDK enhancement proposal: the document that tracks a feature from draft to candidate, targeted, integrated and delivered. read more
- JFR
- java flight recorder. a low-overhead event recorder built into the JVM. read more
- JIT
- just-in-time compiler. turns hot bytecode into native machine code while the program runs. read more
- JMH
- the java microbenchmark harness. the only sane way to benchmark small code. read more
- JNI
- the java native interface: native methods implemented in C against JNIEnv, loaded with System.loadLibrary. read more
- joiner
- the policy object of a StructuredTaskScope: when join() returns, what it returns, and what it throws. read more
- JRE
- java runtime environment. the JVM plus the standard library, without the dev tools. mostly historical now. read more
- jshell
- java's REPL. type a snippet, see its value, no class or main needed. java 9. read more
- JVM
- the java virtual machine. a program that runs bytecode on any OS. read more
l
- labeled break
- break outer; jumps out of the loop labelled outer, even from inside a nested loop. read more
- lambda
- an anonymous function. compiled with invokedynamic, not anonymous classes. read more
- lazy constant
- a value computed at most once, on first use, then treated like a constant. LazyConstant, preview in 27 (was StableValue in 25). read more
- lightweight locking
- HotSpot's uncontended lock: one CAS on the mark word's lock bits plus a push on the thread's lock stack. read more
- livelock
- threads that keep reacting to each other and never make progress, while staying busy. read more
- load factor
- how full a HashMap may get before it doubles. 0.75 by default. read more
- local variable type inference
- var: the compiler infers a local's type from its initializer. still statically typed. java 10. read more
- lock inflation
- turning a contended or waited-on lock into a full ObjectMonitor with entry and wait queues. read more
- logging facade
- an API like SLF4J or System.Logger that code logs through, with the backend chosen by the app. read more
- LongAdder
- a counter that spreads contended updates over padded cells and adds them up in sum(). read more
- lost update
- two threads write results computed from the same old value, so one write erases the other. read more
- LRU cache
- a cache that evicts the least recently used entry. a LinkedHashMap in access order plus removeEldestEntry. read more
- LTS
- long-term support. every 2 years a release gets years of updates. 21 and 25 are LTS. read more
m
- mark word
- the first header word of every object: hash, lock state, GC age. read more
- MatchException
- thrown when a pattern can't be decided at run time: an accessor threw, or a sealed hierarchy grew after the switch was compiled. read more
- MaxRAMPercentage
- the default max heap as a share of the memory the JVM sees: 25%, or the container's limit inside a container. read more
- megamorphic call site
- a virtual call that has seen three or more receiver classes. C2 stops inlining it. read more
- MemorySegment
- the FFM API's bounded, checked view of memory, on or off the heap, freed when its Arena closes. read more
- meta-annotation
- an annotation on an annotation type: @Retention, @Target, @Documented, @Inherited, @Repeatable. read more
- metaspace
- native memory where the JVM keeps class metadata. replaced permgen in java 8. read more
- method overriding
- a subclass replacing an inherited method with the same signature. the object's class picks which runs, at runtime. read more
- method reference
- a lambda that just calls one existing method, written as Class::method or expr::method. read more
- MethodHandle
- a typed, directly callable reference to a method, constructor or field, found once through a Lookup. read more
- modCount
- a counter every structural change bumps. iterators compare it to detect changes behind their back. read more
- module
- a named group of packages with explicit exports and requires. java 9. read more
- module import declaration
- import module java.base; imports every public type in every package a module exports. java 25, allowed in any file. read more
- monitor
- the lock every java object carries. what synchronized grabs. read more
- mutable key
- a hash map key or set element whose hashCode changes after insertion. the entry stays in the old bucket and can't be found or removed. read more
- mutable reduction
- folding a stream into a container that each chunk fills privately. what collect does. read more
n
- NaN
- not a number: what 0.0 / 0.0 gives. the only value not equal to itself, so test with Double.isNaN. read more
- native memory tracking
- a JVM feature that breaks the process's non-heap memory down by category. -XX:NativeMemoryTracking=summary, then jcmd VM.native_memory. read more
- nestmates
- classes from one source file that may use each other's private members directly. java 11, JEP 181. read more
- null-restricted type
- a type that can't hold null, written Foo! in valhalla's draft JEPs. lets the JVM drop the null flag and flatten more. read more
o
- on-stack replacement
- swapping a long-running loop from the interpreter into compiled code while it runs. the % in PrintCompilation. read more
- OOMKilled
- the kernel killing a process for exceeding its container's memory limit: exit code 137, no OutOfMemoryError. read more
- OpenJDK
- the open-source project the JDK is built from. temurin, corretto, oracle's JDK: all builds of it. read more
- operand stack
- the per-frame stack that bytecode instructions push to and pop from. the JVM's scratchpad, next to the local variable array. read more
- operator precedence
- which operators bind tighter, like * before +. it shapes the expression tree, not the evaluation order. read more
- Optional
- a box that holds one value or nothing. a return type for maybe-no-result. read more
- OutOfMemoryError
- thrown when the JVM can't get memory it needs. there are like seven kinds. read more
- overloading
- several methods with the same name and different parameter lists. the compiler picks one from the argument types. read more
p
- package-private
- the access you get with no modifier: visible to the same package, nobody else. read more
- parent delegation
- a class loader asks its parent first and only looks itself when the parent comes back empty. read more
- pass-by-value
- java copies the value of every argument. for objects, the value is the reference. read more
- pattern matching
- testing a value's shape and pulling it apart in one step. read more
- PECS
- producer extends, consumer super. how to pick between ? extends and ? super. read more
- percentile
- the latency that a given share of requests stay under. p99 = 99% were faster. report p50, p99, p99.9 and max, not the mean. read more
- pinning
- a virtual thread stuck to its carrier, unable to unmount while blocked. read more
- pointer chasing
- walking a structure where each element holds the address of the next, so every load waits for the previous one. why linked lists are slow. read more
- polymorphism
- one call site, different behaviour depending on the object's runtime class. read more
- preview feature
- a finished-but-not-final feature you can try with --enable-preview. read more
- primitive
- one of the 8 non-object types: byte, short, int, long, float, double, char, boolean. read more
- primitive patterns
- patterns, instanceof and switch for primitive types, matching only exact conversions: 1000 instanceof byte is false. preview in 27. read more
- primitive stream
- IntStream, LongStream or DoubleStream: a stream of raw numbers, no boxing. read more
- protected
- package-private plus subclasses in other packages, which may only use it through their own type. read more
r
- race condition
- a bug where the result depends on how threads happen to interleave. read more
- raw type
- a generic type used without type arguments, like List instead of List<String>. compiles for old code, switches the type checks off. read more
- record
- a class that's just its data. constructor, accessors, equals, hashCode and toString for free. read more
- record pattern
- a pattern that matches a record and takes it apart into its components by calling the accessors: Point(int x, int y). they nest. read more
- recursion
- a method calling itself. needs a base case. java never optimizes tail calls, so deep recursion overflows the stack. read more
- red-black tree
- a self-balancing binary search tree. recolors and rotates on insert so its height stays O(log n). TreeMap. read more
- reentrancy
- a thread that owns a lock can acquire it again. a hold count tracks how deep it is. read more
- reference
- a value that points at an object on the heap. never the object itself. read more
- reflection
- inspecting and calling classes, fields and methods at runtime by name. read more
- rejection policy
- what a saturated ThreadPoolExecutor does with a new task: throw, run it in the caller, or drop something. read more
- restricted method
- a method that can break java's safety, like System.loadLibrary or Linker.downcallHandle. warns unless native access is enabled. read more
- retained size
- what would become garbage if one object disappeared: itself plus everything reachable only through it. read more
- retention policy
- how long an annotation survives: SOURCE (javac only), CLASS (in the class file, the default) or RUNTIME (visible to reflection). read more
- RSS
- resident set size: memory pages actually in RAM. what top and container limits count, and always more than -Xmx. read more
s
- safe publication
- handing an object to another thread through a happens-before edge, so it sees it fully built. read more
- safepoint
- a point where a thread can be safely paused so the JVM can do global work. read more
- safepoint bias
- a profiler that can only sample at safepoint polls credits time in poll-free code to whatever runs after it. read more
- scalar replacement
- C2 skipping an allocation entirely and keeping a non-escaping object's fields in registers. read more
- scoped value
- an immutable value bound for the duration of a call. the ThreadLocal replacement, final in java 25. read more
- scratch variable
- the $1, $2... name jshell gives a result you didn't name. read more
- sealed
- a class or interface that lists exactly who may extend it. read more
- self-invocation
- a bean calling its own method through this, which bypasses the proxy and so skips @Transactional and friends. read more
- semaphore
- a counter of permits. acquire takes one or waits, release gives one back. limits concurrency. read more
- sequenced collection
- a collection with a defined first and last element: getFirst, getLast, reversed. java 21. read more
- ServiceLoader
- finds implementations of an interface on the class or module path through META-INF/services or provides/uses. read more
- short-circuit evaluation
- && and || skip the right side when the left side already decides the answer. read more
- short-circuiting
- a stream operation that can finish without seeing every element: limit, findFirst, anyMatch. read more
- Signature attribute
- where a class file keeps generic types of classes, fields and methods after erasure. reflection reads it. read more
- signature polymorphic
- a method like invokeExact whose call sites each get their own descriptor from the argument and cast types. read more
- SIMD
- single instruction, multiple data: one CPU instruction working on a whole vector of numbers. what the vector API exposes. read more
- source launcher
- java Main.java: compiles the file in memory and runs it, no .class on disk. java 11, multi-file in 22. read more
- spliterator
- the iterator a stream's source provides. it can split itself in half for parallel work. read more
- spurious wakeup
- wait() returning with no notify at all. the reason wait always goes in a while loop. read more
- stable sort
- a sort that keeps equal elements in their original order. java's object sort is stable. read more
- stack chunk
- the heap object a parked virtual thread's frames are copied into (freeze) and copied back out of (thaw). read more
- stack frame
- the chunk of the thread's stack a method call gets for its locals and operands. read more
- stack trace
- the call stack when an exception was thrown, newest call first. read more
- stack unwinding
- popping frames one by one after a throw, running finally blocks, until a catch matches. read more
- stateful operation
- an intermediate op that remembers earlier elements: distinct, sorted, limit, skip. read more
- static initializer
- a static { } block. runs once, when the class is initialized, collected with static field initializers into <clinit>. read more
- stop-the-world
- a pause where every application thread is frozen so the GC can work. read more
- store buffer
- a per-core queue where writes wait before reaching the cache. why the impossible r1 = r2 = 0 happens. read more
- stream
- a lazy pipeline over a source. nothing runs until a terminal operation. read more
- string pool
- the JVM's table of interned strings. every literal lives there once. read more
- StringBuilder
- a growable byte[] for building text. grows as old * 2 + 2, so appends are amortized O(1). read more
- strong encapsulation
- since java 17 the JDK's private members are closed to reflection. setAccessible throws unless the package is opened. read more
- structured concurrency
- subtasks confined to a block: forked inside it, all finished when it ends, cancelled together. read more
- super type token
- an anonymous subclass like new TypeRef<List<String>>() {} that captures a full generic type at run time. read more
- suppressed exception
- a close() failure attached to the body's exception instead of replacing it. getSuppressed(). read more
- switch expression
- a switch with case X -> arms that produces a value. no fallthrough, and it must cover every input. java 14. read more
t
- target type
- the functional interface a lambda becomes, decided by where it's written: assignment, argument or cast. read more
- terminal operation
- the stream step that pulls elements through and produces a result: toList, count, forEach. read more
- text block
- a multi-line string in triple quotes. java strips the indentation your code added. java 15. read more
- this$0
- the hidden field an inner class uses to reach the outer object that created it. a classic memory leak. read more
- thread
- an independent path of execution with its own stack. read more
- thread pool
- a fixed crew of threads that pull tasks off a queue. read more
- tiered compilation
- running code at levels 0 to 4: interpreter, three flavours of C1, then C2, climbing as it gets hotter. read more
- time to safepoint
- how long the JVM waits for every running thread to reach a poll before a global pause can start. read more
- TimSort
- the stable merge sort java uses for objects. finds runs that are already sorted and merges them. read more
- TLAB
- thread-local allocation buffer. each thread's private slice of eden for fast allocation. read more
- training run
- a normal run of your app that records what it loads, links, profiles and compiles, so an AOT cache can give later runs a head start. read more
- treeification
- a HashMap bucket turning from a linked list into a red-black tree after 8 collisions. read more
- two's complement
- how integers store negative numbers: flip the bits and add 1. why the range is -128 to 127. read more
- type erasure
- the compiler removing generic type arguments after checking them. read more
- type inference
- javac working out a generic call's type arguments from the arguments and the target type. read more
- type parameter
- the T in class Box<T>: a placeholder type. the String in Box<String> is the type argument. read more
- type token
- a Class<T> passed in so generic code has a real type to check and cast with at run time. read more
u
- unchecked exception
- RuntimeException, Error and their subclasses. nobody is forced to catch them. read more
- unchecked warning
- javac telling you it can't verify a generic operation, so a cast it inserted elsewhere might fail at run time. read more
- uncommon trap
- the exit C2 compiles in for cases its profile said never happen. hitting one deoptimizes the method. read more
- unified logging
- the JVM's -Xlog system (java 9): pick tags and levels, an output and decorators. GC logs are -Xlog:gc*. read more
- unmodifiable view
- a read-only wrapper around a collection. blocks writes through itself, but shows changes to the original. read more
- unnamed variable
- _ for a pattern, lambda parameter, catch variable or loop variable you have to declare but never use. java 22. read more
v
- value object
- an object without identity, so the JVM can flatten it. valhalla. read more
- varargs
- a T... parameter that accepts any number of arguments, delivered to the method as an array. read more
- VarHandle
- a handle to a field or array slot with CAS and per-access memory ordering: plain, opaque, acquire/release, volatile. read more
- virtual thread
- a cheap thread managed by the JVM, mounted on a platform thread only while running. read more
- volatile
- a field whose writes are immediately visible to other threads, and never reordered around. read more
- vtable
- a per-class table of method pointers the JVM uses for fast virtual calls. read more
w
- warmup
- the first calls of a method run interpreted or lightly compiled. benchmarks discard them before measuring. read more
- wildcard
- ? in a type argument: List<?>, List<? extends T> (read only) or List<? super T> (write only). read more
- wildcard capture
- javac naming the unknown type behind a ? (CAP#1 in errors). a generic helper method can capture it as a real T. read more
- work stealing
- idle workers take tasks from the far end of busy workers' deques. how ForkJoinPool balances load. read more
- wrapper class
- the object version of a primitive: Integer for int, Long for long, and so on. read more
z
- ZGC
- a concurrent collector with sub-millisecond pauses, using colored pointers. read more