A method comprising: receiving, by a processing device, first program code comprising a first plurality of program code instructions, the first program code instructions generated by a compiler in view of source code; identifying, among the first program code instructions, one or more optimizable instructions, wherein at least one of the optimizable instructions is associated with a first execution characteristic, and the first execution characteristic is associated with an optimization decision; identifying at least one profiling instruction location associated with the at least one of the optimizable instructions; and adding at least one profiling instruction to the first program code at the profiling instruction location, wherein the at least one profiling instruction comprises at least one profiling identifier, and wherein the at least one profiling instruction causes the processing device to: generate a profiling information item in view of the first execution characteristic of the at least one of the optimizable instructions, and store the profiling information item in a persistent memory region at a memory location that corresponds to the profiling identifier; invoke an optimizer component which reads the profiling information item from the memory region and generates optimized program code in accordance with the profiling information; characterised in that the profiling identifier comprises an identifier value that is incremented for each profiling instruction added to the first generated program code; and the memory location comprises a sum of a base address of the persistent memory region and an offset determined in view of the profiling identifier. receiving, by a processing device, first program code comprising a first plurality of program code instructions, the first program code instructions generated by a compiler in view of source code; identifying, among the first program code instructions, one or more optimizable instructions, wherein at least one of the optimizable instructions is associated with a first execution characteristic, and the first execution characteristic is associated with an optimization decision; identifying at least one profiling instruction location associated with the at least one of the optimizable instructions; and adding at least one profiling instruction to the first program code at the profiling instruction location, wherein the at least one profiling instruction comprises at least one profiling identifier, and wherein the at least one profiling instruction causes the processing device to: generate a profiling information item in view of the first execution characteristic of the at least one of the optimizable instructions, and store the profiling information item in a persistent memory region at a memory location that corresponds to the profiling identifier; invoke an optimizer component which reads the profiling information item from the memory region and generates optimized program code in accordance with the profiling information; characterised in that generate a profiling information item in view of the first execution characteristic of the at least one of the optimizable instructions, and store the profiling information item in a persistent memory region at a memory location that corresponds to the profiling identifier; invoke an optimizer component which reads the profiling information item from the memory region and generates optimized program code in accordance with the profiling information; characterised in that the profiling identifier comprises an identifier value that is incremented for each profiling instruction added to the first generated program code; and the memory location comprises a sum of a base address of the persistent memory region and an offset determined in view of the profiling identifier.