title: Why does sun.misc.Launcher$AppClassLoader.loadClass appear in the stack
body: <p>I have instrumented JDK and application. Entry and exit points are recorded for call graph construction.</p>
  
  <p>The call graph looks like </p>
  
  <blockquote>
    <p>sun.misc.Launcher$AppClassLoader.loadClass->com.example.Main.main<br>
    ->sun.misc.Launcher$AppClassLoader.loadClass->com.example.Foo.foo</p>
  </blockquote>
  
  <p>Source code </p>
  
  <pre><code>public class Main{
  public static void main(String[] args){
    Foo.foo()
  }
  }
  
  public class Foo{
    public static void foo(){};
  }
  </code></pre>
  
  <p>This must be how classloader works but I don't see anything shows in bytecode that indicate the call site "sun.misc.Launcher$AppClassLoader.loadClass". So, how does classloader work internally?</p>