1. A method for dynamic allocation of memory address space, comprising: protecting an optimized version of a program from modification; executing an original version of the program, the executing of the original version of the program including executing a request to use memory address space occupied by the optimized version of the program; copying a portion of the optimized version of the program residing in the memory address space requested by the original version of the program, writing the copied portion of the optimized version of the program to unallocated memory address space, and adjusting code of the optimized version of the program; releasing the protecting of the copied portion of the optimized version of the program from modification after completing the writing; returning execution control to the original version of the program; and re-executing the request to use the memory address space occupied by the portion of the optimized version of the program for which the protecting has been released.