1. A method for collecting profiling information during runtime of a multithreaded program, the method comprising the steps of: receiving a plurality of instructions of the program for execution in an application thread; storing a plurality of profiling records in a buffer assigned exclusively to the application thread during execution of the plurality of instructions; processing using a compiler the plurality of profiling records in the buffer.