In a shared-memory machine, instructions and data
are stored in the same memory address space. However, for performance, they are
cached separately. Large code working set, branch misprediction, including one
caused by excessive use of virtual functions, can induce misses into L1I and so
cause instruction starvation that badly influence application performance.