1. A system comprising: a processor and a memory of a multi-processor computing device; and at least one module on the multi-processor computing device configured to cause at least one processor of the multi-processor computing device to: collect profile information for a first execution of a program, without affecting the first execution by preventing execution of user code on background threads, the program executing in a foreground thread of a first process, the profile information for the first execution identifying at least one of a plurality of methods that the first execution of the program executes, and the profile information identifying a set of modules for the at least one method, the set of modules comprising dependencies of the at least one method; monitor a second execution of the program in a foreground thread of a second process; using the collected profile information, predict that the at least one method will likely be executed when the identified set of modules is loaded into the second process; and in response to determining that the identified set of modules is loaded into the second process, compile the at least one method in a background thread of the second process using idle central processing unit cycles and an available processor core.