something about jvm

java 文件被编译器编译成字节码文件(.class)
字节码就是十六进制的流文件
为便于开发者理解,通常 IDE 会根据字节码的规则将字节码文件翻译成易读的 java 代码。
字节码文件会被交给 java 虚拟机来执行。
字节码并非只能通过 .java 文件编译而来,只要符合字节码的规范,我们甚至可以自己手写字节码。
参考资料

双亲委派机制
双亲委派机制是指 jvm 中对于类加载的一种推荐做法。
jvm 中并没有强制规定类加载的机制,而是将类加载的过程放在了 jvm 外面。一般的类加载器我们可以分为两大类,一类是用 C++ 编写,集成在 jvm 内部的 Bootstrap ClassLoader,另一类是用 java 语言编写的加载器,其中又可以分为拓展类加载器(Extension ClassLoader)、应用程序类加载器(Application ClassLoader)和自定义类加载器。
双亲委派机制是指当一个类加载器在加载类的时候,会先请求自己的父加载器来加载。这里的父子关系不是通过继承来实现的,而是通过组合的方式来实现的,如下:

// java.lang.ClassLoader 类中
protected Class<?> loadClass(String name, boolean resolve)
       throws ClassNotFoundException
   {
       synchronized (getClassLoadingLock(name)) {
           // First, check if the class has already been loaded
           Class<?> c = findLoadedClass(name);
           if (c == null) {
               long t0 = System.nanoTime();
               try {
                   if (parent != null) {
                       c = parent.loadClass(name, false);
                   } else {
                       c = findBootstrapClassOrNull(name);
                   }
               } catch (ClassNotFoundException e) {
                   // ClassNotFoundException thrown if class not found
                   // from the non-null parent class loader
               }

               if (c == null) {
                   // If still not found, then invoke findClass in order
                   // to find the class.
                   long t1 = System.nanoTime();
                   c = findClass(name);

                   // this is the defining class loader; record the stats
                   sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
                   sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
                   sun.misc.PerfCounter.getFindClasses().increment();
               }
           }
           if (resolve) {
               resolveClass(c);
           }
           return c;
       }
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,539评论 25 709
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,818评论 3 83
  • 等今年初雪的时候吧,我就去剪头发,嗯。
    芒果E阅读 170评论 0 0
  • 一、总评价目标: 1、能正确识记教育学的基本事实、基本概念与基本原理。 2、能准确理解教育学的基本理论,掌握学习与...
    赣西小城阅读 410评论 0 0
  • 行香子 过七里濑 一叶舟轻 双桨鸿惊 水...
    我想跟你说阅读 344评论 1 2