
errorprone.bugpattern.NoAllocation.md Maven / Gradle / Ivy
The newest version!
Like many other languages, Java provides automatic memory management. In Java,
this feature incurs an runtime cost, and can also lead to unpredictable
execution pauses. In most cases, this is a reasonable tradeoff, but sometimes
the loss of performance or predictability is unacceptable. Examples include
pause-sensitive user interface handlers, high query rate server response
handlers, or other soft-realtime applications.
In these situations, you can annotate a few carefully written methods with
@NoAllocation. Methods with this annotation will avoid allocations in most
cases, reducing pressure on the garbage collector. Note that allocations may
still occur in methods with @NoAllocation if the compiler or runtime system
inserts them.
To ease the use of exceptions, allocations are allowed if they occur within a
throw statement. But if the throw statement contains a nested class with methods
annotated with @NoAllocation, those methods will be disallowed from allocating.
© 2015 - 2025 Weber Informatics LLC | Privacy Policy