Optimistic Stack Allocation and Dynamic Heapification for Managed Runtimes
summary
Static + dynamic system uses a precise static escape analysis (built in Soot) to emit optimistic stack allocations into the OpenJ9 JIT, and when runtime features invalidate assumptions it performs dynamic heapification of the escaping object and its reachable closure while fixing references. A static stack ordering reduces expensive stack-walk checks. Implemented in Soot and Eclipse OpenJ9, it increases stack-allocated objects by ~71% and stack bytes by ~54%, yields ~8.8% average runtime speedup, cuts GC cycles by ~5.3%, and reports ~1s cost per million heapifications.
AI-written summary · about
chapters (13)
- 0:00Stack allocation in Java
- 2:26Escape analysis limits
- 3:32Escape analysis failure example
- 5:40Dynamic heapification fix
- 6:44Heapification store checks
- 8:29Heapification scenarios
- 10:13Efficient stack ordering
- 11:40Implementation setup
- 12:23Stack allocation results
- 13:29Performance impact
- 14:10GC reduction with stack
- 14:31Conclusion
- 15:15Q&A
related talks
06mSimple Tweaks to Get the Most Out of your JVM
42mA State of Java Elasticity
39mMemory Efficient Java
42mSimple tweaks to get the most out of your JVM
14mCloudJIT: A Just-in-Time FaaS Optimizer (Work in Progress)
54mThe Dark Arts of Performance Tuning
58mOptimization Tips - Mo' Hustle Mo' Problems
38mAre you ready for Cloud Native Java?
