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; identifying by an interpreter within a virtual machine whether profiling is enabled for the plurality of instructions within a bytecode table, wherein for each of the plurality of instructions, the bytecode table points to one of a first implementation that collects profiling records and a second implementation that does not collect profiling records; responsive to the bytecode table pointing to the first implementation, storing by the interpreter within the virtual machine a plurality of profiling records in a buffer assigned exclusively to the application thread during execution of the plurality of instructions, wherein at least one of the plurality of profiling records is a branch statement count, the branch statement count being a single byte, wherein each profiling record is of a variable size; and processing using a compiler within the virtual machine the plurality of profiling records in the buffer.