title: What are the limitations of memoization?
body: <p>Considering memoization for program performance optimization, it seems that in certain circumstances it could be very beneficial, since it removes the repeated computations completely. And there are a large number of existing language-level support in programming languages like Python, Java, C/C++, and so on. One of the example is a Python interpreter named IncPy. It could do automatic memoization and no extra work from programmer. </p>
  
  <p>However, I don't think memoization is widely adopted in real world projects. And no big company has much interests on it either. So, what are the major limitations of it? </p>
  
  <p>Any suggestions or ideas are welcomed and appreciated. The following are some limitations from my understanding:</p>
  
  <ol>
  <li>slowdown in initial execution</li>
  <li>space overhead</li>
  <li>extra burdens on programmers, because it may require programmers to modify code</li>
  </ol>
  
  <hr>
  
  <p>(I updated my question a little bit from here.)</p>
  
  <p>Thanks for your comments. I guess among the three reasons I listed here, the third one is more important. Is this correct?</p>
  
  <p>If you think memoization is indeed used widely, could you give me some examples, or  some keywords? </p>
  
  <p>Thanks!</p>