1. A computer implemented cache optimization method comprising: tracing objects instantiated during execution of a program code under test according to type of access by one or more threads running in parallel, wherein said tracing provides information about order in which different instances of one or more objects are accessed by said one or more threads and whether the type of access is a read operation or a write operation; and utilizing tracing information to build a temporal relationship graph (TRG) for the accessed objects which identifies FS threats, among other things, wherein the objects are represented by nodes in the TRG and at least two types of edges for connecting the nodes are defined; wherein a first type of edge uni-directionally connects a first object to a second object to indicate that a thread accessed a first object and another thread wrote to the second object in a temporal proximity and so defines a FS threat, wherein a second type of edge non-directionally connects a first object to a second object to indicate that the first and the second objects were accessed in a temporal proximity by the same thread, or by a different thread but when neither access were a write access, wherein a weight is assigned to the edge of the first type, and said weight is incremented each time one thread accesses the first object and another thread writes to the second object, and wherein a weight is assigned to the edge of the second type, and said weight is incremented each time the first and second objects are accessed in said temporal proximity.