Release 0.26.0
carl-mastrangelo
released this
09 Nov 08:23
·
77 commits
to master
since this release
API Changes
PerfMark.setEnabled()
now returns if setting the value succeeded. (#181).
Implementation Improvements
- Added work arounds for Java 19's Virtual threads, which may not be able to
use Thread Local storage. If this is the case, PerfMark attempts to
emulate thread local trace buffers using a concurrent map. - Trace storage now more eagerly removes storage when it find the thread
is gone, and is more GC friendly. PerfMark still attempts to preserve
trace data after a thread finishes, but without strongly referring to it.
Unstable API Changes
The following changes are to unstable APIs of PerfMark. This section
describes APIs for advanced users to try out new functionality before
it becomes API stable.
- Added Methods to
Storage
for clearing thread local and global storage (#177)Storage.clearLocalStorage()
enables individual threads to clear their storageStorage.clearGlobalIndex()
marks storage as SoftlyReachable where possible
It can be used to indiciate that future calls toStorage.read()
should not
include data after the point that the global index was cleared. Both
clearLocalStorage
andclearGlobalIndex
can be used to remove old trace
data.LocalMarkHolder
was added to enter and exit critical sections of of
MarkHolder mutation. The only implementation currently pulls the MarkHolder
out of thread local storage for editing. However, this designed to work with
other context-specific storage mechanisms, such as Kotlin's Coroutines.