issue 34046 velocity memory & sync issues #34050
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Complete Session Summary - All Optimizations
Additional Velocity Optimizations Implemented
Problem: Every interpolated string like "Hello $name" created a new StringWriter.
Solution: ThreadLocal StringWriter pool
Impact: Pages with 50+ interpolated strings save 50+ allocations per render.
Problem: Block references (used with #define and #block) created new StringWriter on toString().
Solution: ThreadLocal StringWriter pool for the inner Reference class.
Impact: Eliminates StringWriter allocation per block reference conversion.
Problem: Every method call
$foo.bar(arg)allocated 2 arrays.Solution: ThreadLocal Object[] and Class[] pools for 0-8 parameters.
Impact: Eliminates ~2 allocations per method call.
Complete Velocity Optimization Summary
What Was NOT Changed (Already Optimized or Not Hot Paths):
Full Session Summary - All Memory Optimizations
Estimated Total Impact
For a typical page with 30 contentlets, 100 method calls, and 50 interpolated strings:
~90% reduction in allocation rate for typical page renders.