zoukankan      html  css  js  c++  java
  • JVM快速入门(上)

    一、JVM体系结构

        .java经由javac变为class字节码文件,再通过类加载器加载.对于类加载器我根据南淮北安博主的文章进行了总结.

    1.类加载器
        我们都知道java程序写好以后是以.java(文本文件)的文件存在磁盘上,然后,我们通过(bin/javac.exe)编译命令把.java文件编译成.class文件(字节码文件),并存在磁盘上。但是程序要运行,首先一定要把.class文件加载到JVM内存中才能使用的,我们所讲的classLoader,就是负责把磁盘上的.class文件加载到JVM内存中.

    2.ClassLoader 层次结构
         类加载器有三种:
    (1)根类加载器(null)
    它是由本地代码(c/c++)实现的,你根本拿不到他的引用,但是他实际存在,并且加载一些重要的类,它加载(%JAVA_HOME%jrelib),如rt.jar(runtime)、i18n.jar等,这些是Java的核心类。
    (2)平台类加载器(PlatformClassLoader)(jdk1.8之后的版本,之前的称为扩展类加载器 ExtClassLoader)
    虽说能拿到,但是我们在实践中很少用到它,它主要加载扩展目录下的jar包, %JAVA_HOME%libext
    (3)应用类加载器(appClassLoader)
    它主要加载我们应用程序中的类,如Test,或者用到的第三方包,如jdbc驱动包等。这里的父类加载器与类中继承概念要区分,它们在class定义上是没有父子关系的。

    3.Class 加载时调用类加载器的顺序
         当一个类要被加载时,有一个启动类加载器和实际类加载器的概念,这个概念请看如下分析:
    如上面的Test.class要进行加载时,它将会启动应用类加载器进行加载Test类,但是这个应用类加载器不会真正去加载它,而是会调用看是否有父加载器,结果有,是扩展类加载器,扩展类加载器也不会直接去加载,它看自己是否有父加载器没,结果它还是有的,是根类加载器。

    转载https://blog.csdn.net/weixin_44273302/article/details/112120656?utm_medium=distribute.pc_category.none-task-blog-hot-5.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-5.nonecase

  • 相关阅读:
    Nginx 配置指令location 匹配符优先级和安全问题【转】
    服务器压力测试 ab
    Linux 下绑定域名与IP地址
    nginx 均衡负载配置
    Centos下搭建ftp服务器
    php开发环境搭建
    史上最全Vim快捷键键位图(入门到进阶)
    Linux vi/vim
    CentOS用户权限管理--su与sudo
    Linux基础知识-文件管理
  • 原文地址:https://www.cnblogs.com/ruhua1/p/14233578.html
Copyright © 2011-2022 走看看