Cross Run Considerations
summary
Describes concrete roadblocks and fixes for passing runtime info across JVM runs, with examples: class data sharing and compiled code stashing rely on repeatable identities but class loaders lack stable names, generated reflectors and lambdas use counters that shift between runs, and tiny profile variations break cache hits. Proposes naming APIs for class loaders, deterministic names via hashing for generated classes, fuzzy profile matching, and reports a real case where Spark produced 5,000 generated constructor accessors that hashing collapsed into a single repeatable identity.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 2:55Examples
- 4:40Speed
- 9:03Motivation
- 13:19Problem
- 14:33Class Loaders
- 15:27Known Loaders
- 16:19Unknown Loaders
- 17:03Naming
- 18:58Class Names
- 19:18Reflection
- 21:25Lambda Expressions
- 22:17XML Transform
- 23:04Practical Example
- 23:45Profiles
- 25:10Class IDs
- 26:56Correctness
related talks
30mHow Clojure Works: Understanding the Clojure Runtime
01h 01mThe Static Dynamic JVM – A Many Layered Dive
50mRevealing the magic behind Java annotations
45mMaking Java more dynamic
48mA journey to JVM Excellence: Navigating JDKs and JVMs
46mPopular Approaches to Preventing Code Injection Attacks are Dangerously Wrong
26mAn Analysis of Compiled Code Reusability in Dynamic Compilation
01h 00mStatic Java, GraalVM Native and OpenJDK
