title: Understanding the difference between a static and a non-static method representation on the heap
body: <p>I have already read some posts on this topic:</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/8376953/how-are-instance-methods-stored">How are instance methods stored</a></li>
  <li><a href="https://stackoverflow.com/questions/3849634/static-allocation-in-java-heap-stack-and-permanent-generation/3849819#3849819">static allocation in java - heap, stack and permanent generation</a></li>
  <li><a href="https://stackoverflow.com/questions/8387989/where-is-a-static-method-and-a-static-variable-stored-in-java-in-heap-or-in-sta">where is a static method and a static variable stored in java. In heap or in stack memory</a></li>
  </ul>
  
  <p>But I am confused by the concept they illustrate:</p>
  
  <blockquote>
    <p>Static methods (in fact all methods) as well as static variables are stored in the PermGen section of the heap, since they are part of the reflection data (class related data, not instance related).</p>
  </blockquote>
  
  <p>So methods, whether <code>static</code> or not, are only stored for one copy on the heap in the class. Now that there is only one copy which is in the class, which I interpreted as all methods belong to the class, then why can Java only call a non-static method using an instantiated instance?</p>
  
  <p>Why do we have the concept that non-static methods belong to the instance, not the class?</p>