In programming language compiler optimization theory, escape analysis is a method for determining the dynamic scope of pointers. It is related to pointer analysis and shape analysis.
When a variable (or an object) is allocated in a subroutine, a pointer to the variable can escape to other threads of execution, or to calling subroutines. If an implementation uses tail call optimization (usually required for functional languages), objects may also be seen as escaping to called subroutines. If a language supports first-class continuations (as do Scheme and Standard ML of New Jersey), portions of the call stack may also escape.
If a subroutine allocates an object and returns a pointer to it, the object can be accessed from undetermined places in the program — the pointer has "escaped". Pointers can also escape if they are stored in global variables or other data structures that, in turn, escape the current procedure.
Escape analysis determines all the places where a pointer can be stored and whether the lifetime of the pointer can be proven to be restricted only to the current procedure and/or thread.
Read more about Escape Analysis: Optimizations, Practical Considerations, Example (Java), Examples (Scheme)
Famous quotes containing the words escape and/or analysis:
“Our senses perceive no extreme. Too much sound deafens us; too much light dazzles us; too great distance or proximity hinders our view. Too great length and too great brevity of discourse tends to obscurity; too much truth is paralyzing.... In short, extremes are for us as though they were not, and we are not within their notice. They escape us, or we them.”
—Blaise Pascal (16231662)
“Ask anyone committed to Marxist analysis how many angels on the head of a pin, and you will be asked in return to never mind the angels, tell me who controls the production of pins.”
—Joan Didion (b. 1934)