1. A method for evaluating a performance of a distributed, complex multi-tier application when migrated from a first environment in which the distributed, complex multi-tier application is currently executing to a second, different environment, the method comprising: collecting data indicative of a resource-consuming behavior and an inter-tier behavior of the distributed, complex multi tier application, wherein the data comprises data indicative of at least one of: a role assigned to an active thread of the distributed, complex multi tier application or a pattern in which an active thread of the distributed, complex multi tier application is created and destroyed; generating a virtual application that mimics the resource consuming behavior and an inter-tier behavior of the distributed, complex multi-tier application, based at least in part on the data, wherein the virtual application further mimics system calls and resident set size runtime changes observed in the distributed, complex multi-tier application; executing the virtual application in the second environment; and evaluating a performance of the virtual application in the second environment, wherein at least one of: the generating, the executing, or the evaluating is performed by a processor.