1. A method of static analysis of control flow and object flow within an object-oriented application, comprising: invoking a base method of a plurality of methods within the object-oriented application, the base method further: instantiating a plurality of representations of objects that are created within the invocation of the base method of a plurality of objects of the object-oriented application, wherein a single object representation is used to represent all objects of the plurality of objects instantiated at a given instruction of the object-oriented application; passing the plurality of representations of the plurality of objects as arguments to the invocation of the base method; accessing a plurality of reachable data fields, a plurality of reachable array elements and a plurality of further reachable method invocations reachable from the invocation of the base method; passing all objects of the plurality of objects that can be passed into the plurality of reachable data fields, the plurality of reachable array elements and the plurality of further reachable method invocations of a plurality of reachable methods of the plurality of methods to establish a plurality of connections in accordance with a plurality of instructions of the object-oriented application; wherein a single method invocation representation is used to represent all invocations of the same method, and a single object representation is used to represent all objects instantiated at a given instruction, and wherein the plurality of objects are passed from methods to methods of the plurality of further reachable methods, from methods of the plurality of further reachable methods to fields of the plurality of reachable data fields, from fields of the plurality of reachable data fields to methods of the plurality of further reachable methods, from methods of the plurality of further reachable methods to array elements plurality of reachable array elements and from array elements of the plurality of reachable array elements to methods of the plurality of further reachable methods in accordance with semantics of the plurality of instructions used to established the connections and a language of the object-oriented application so that the flow of objects and the establishment of connections mimic the execution of the object-oriented application at runtime, for each field of the plurality of reachable data fields and each array element of the plurality of reachable array elements, passing any objects of the plurality of reachable data fields and the plurality of reachable array elements to methods of the plurality of reachable methods that have established connections to said each field and said each array element; repeating the invoking of reachable methods and the passing of objects for any newly accessed method invocations, fields, and array elements until all accessed method invocations, fields and array elements can no longer establish any new connections to other methods, fields or array elements, or pass any objects through previously established connections; determining one or more possible routes of escape of objects from the plurality of objects from the object-oriented application, wherein the one or more possible routes of escape permit objects to persist longer than the invocation of the base method; identifying a plurality of escaped objects of the plurality of objects that have escaped from the one or more routes of escape and identifying a plurality of unescaped objects of the plurality of objects that are not the plurality of escaped objects of the plurality of objects; and optimizing one or more of the plurality of unescaped objects when the object-orientated application is executed at runtime.