In recent years, dynamic compilation and optimization have received a lot of attention from many researchers as Java program and .NET runtime becomes popular. Traditional compiler needs proper profile of program execution for advanced compiler optimizations. Producing representative profile covering most of input sets by itself is very difficult and sometime is not possible. Dynamic binary re-optimization opens a way to adapt program binary according to run-time program behaviors by collecting profile and re-optimizing binary on the fly. Many programs have too short execution time to gather proper profile, but they are repeatedly executed in many times. In server and parallel applications running on multi-processors, this becomes even more difficult because many concurrent processes cooperate and show variable behavior on different processors in each runs. In this talk, I will present a framework that collects proper profile for multi-process and multi-threaded applications and accumulates profile information with dynamic control flow. This framework enables continuous optimization for parallel programs and detecting abnormal behaviors even in the single threaded program. Monitoring and profiling is non-intrusive because it uses sampling techniques with support of hardware performance registers. It deploys learning mechanism to adapt optimization according to system run-time requirements such as performance, power consumption and so on. Eventually, it will be key components of new run-time environment to load, execute, profile and adapt program binary by itself in autonomous fashion.