随笔分类 -  JVM深入学习

上一页 1 2 3 4 5 下一页

JVM是一个让人望而却步的东东,做为一个有志向的Java开发人员深入学习它是非常有必要的~~所以接下来准备一点点剖开它神秘的面纱~
Java字节码常量池深度剖析与字节码整体结构分解
摘要:常量池深度剖析: 在上一次【https://www.cnblogs.com/webor2006/p/9416831.html】中已经将常量池分析到了2/3了,接着把剩下的分析完,先回顾一下我们编译的源文件为: 然后用javap -verbose查看一下编译字节码的信息,其中字符串相关的如下: 而对应 阅读全文

posted @ 2018-08-10 22:00 cexo 阅读(657) 评论(0) 推荐(0) 编辑

透彻分析常量池常量结构与描述符
摘要:继续延着上一次【https://www.cnblogs.com/webor2006/p/9410518.html】往下来分析Java字节码,其中已经分析到了常量池数量那块了,如下: 转换成十进制则为24个,但是由于第一个为备用的,所以总常量池的大小为23,如javap命令看到的那样: 好,接着来一个 阅读全文

posted @ 2018-08-03 23:14 cexo 阅读(496) 评论(0) 推荐(0) 编辑

Java字节码常量池深入剖析
摘要:继续来分析Java字节码,上一节分析了魔数的规则,接下来继续往下分析,其上次总结的规则也一起贴出来: 1、使用javap -verbose命令分析一个字节码文件时,将会分析该字节码文件的魔数、版本号、常量池、类信息、类的构造方法、类中的方法信息、类变量与成员变量等信息。 2、魔数:所有的.class 阅读全文

posted @ 2018-08-02 22:08 cexo 阅读(809) 评论(0) 推荐(0) 编辑

Java字节码文件结构剖析
摘要:今天起开启JVM的新的知识学习篇章 Java的字节码,那学习Java字节码有啥用呢?我们知道Java是跨平台的一门语言,编写一次到处运行,而支撑着这个特性的根基为两点:JVM和.class字节码文件,java在不同的平台上编译生成的.class文件是一模一样的,而JVM针对不同的操作系统会有不同的J 阅读全文

posted @ 2018-08-01 22:10 cexo 阅读(371) 评论(0) 推荐(0) 编辑

类加载器系统回顾与内容延伸
摘要:在之前已经对JVM中涉及到的类加载器的知识点进行了非常详细的学习,但是距离上一次又过去很长一段时间了,人的记忆肯定会有些模糊,所以在学习JVM下一个全新知识点时有必要对之前所学的类加载器进行一个系统性的回顾,启到一个承上起下的作用,不是有古人云嘛:“温故而知新,可以为师矣”,并且通过系统性的回顾会延 阅读全文

posted @ 2018-07-28 21:20 cexo 阅读(275) 评论(0) 推荐(0) 编辑

通过JDBC驱动加载深刻理解线程上下文类加载器机制
摘要:关于线程上下文类加载器已经在之前学得比较透了,作为一个收尾,这里用平常J2EE开发时JDBC连接Mysql数据库常见的一段代码通过分析它的底层进一步加深对线程上下文类加载器的理解,所以先来将连接应用代码写上,注意:这里不力求真正的去完成数据的连接,重在在分代码,如下: 说实话如今的工作重点是搞and 阅读全文

posted @ 2018-07-06 23:21 cexo 阅读(700) 评论(0) 推荐(1) 编辑

线程上下文类加载器实战分析与难点剖析
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9260949.html】已经对ServiceLoader这个类的javadoc通读了一遍,这次来分析一下它是如何来加载驱动的底层细节,先来回顾一下上一次编写的程序: 然后重点是看第一句加载的代码: 那跟进去看一下呗, 阅读全文

posted @ 2018-07-05 22:59 cexo 阅读(355) 评论(0) 推荐(0) 编辑

ServiceLoader在SPI中的重要作用分析
摘要:对于线程上下文类加载器在之前已经对它进行了详细的理论化的学习,其中对于这个类加载器应用最多的也就是在SPI场合下用来打破双亲委托机制,如之前所描述的: 这次举一个具体的例子来进一步的加深对线程上下文类加载器的理解,这里以mysql为例,当然首先得要将mysql的依赖jar给导进来喽,如下: 好~~万 阅读全文

posted @ 2018-07-03 22:14 cexo 阅读(498) 评论(0) 推荐(0) 编辑

线程上下文类加载器本质剖析与实现
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9248621.html】对线程上下文类加载器进行理论化的了解,这里回忆一下重点之处: 这里以JDBC的这种SPI场景用图来更具体的描述一下: 而根据这个理论: 很明显JDBC会去引用JDBCImpl的具体厂商的实现, 阅读全文

posted @ 2018-06-30 22:01 cexo 阅读(377) 评论(0) 推荐(0) 编辑

线程上下文类加载器分析与实现
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9246850.html】分析源码中发现有两处设置线程上下文类加载器的代码,如下: 因为它是非常重要的东东,所以这次专门对它进行主题展开,主要的作用为了改变委托双亲模式在某些场景不太适用或者是无法满足需求的,下面先写一 阅读全文

posted @ 2018-06-30 20:56 cexo 阅读(585) 评论(0) 推荐(0) 编辑

自定义系统类加载器源码分析与forName方法底层剖析
摘要:基于上一次【https://www.cnblogs.com/webor2006/p/9240898.html】Launcher的分析继续,上次分析到了这: 接着创建应用类加载器,其创建过程其扩展类加载器类似,如下: 这里有一个细节: 因为扩展类加载器是应用类加载器的父亲,所以没必要也记录扩展类加载器 阅读全文

posted @ 2018-06-30 13:59 cexo 阅读(371) 评论(0) 推荐(0) 编辑

Launcher类源码分析
摘要:基于上一次获取系统类加载器这块进行分析: 关于这个方法的javadoc在之前已经阅读过了,不过这里再来仔细阅读一下加深印象: 这里有一个非常重要的概念:上下文类加载器: 它的作用非常之大,在后面会详细进行学习,先有个印象。 接着来看一下它的具体实现: 再来看一下是如何初始化的: 所以接下来将焦点定位 阅读全文

posted @ 2018-06-28 21:49 cexo 阅读(589) 评论(0) 推荐(0) 编辑

平台特定的启动类加载器深入分析与自定义系统类加载器详解
摘要:平台特定的启动类加载器深入分析: 这里以上一次【https://www.cnblogs.com/webor2006/p/9157626.html】的这个程序作为学习的开端,如下: 运行结果: 可见不同的系统类加载器所加载的目录是不一样的,那如果换成用java命令来执行这个程序会有啥不同呢,先进入该字 阅读全文

posted @ 2018-06-25 22:16 cexo 阅读(369) 评论(0) 推荐(0) 编辑

类加载器命名空间总结与扩展类加载器要点分析
摘要:类加载器命名空间总结: 类加载器的双亲委托模型的好处: 可以确保Java核心库【如JDK中rt.jar里面的类】的安全:所有的Java应用至少会引用java.lang.Object类,也就是说在运行期,java.lang.Object这个类会被加载到Java虚拟机中;如果这个加载过程是由Java应用 阅读全文

posted @ 2018-06-10 10:10 cexo 阅读(345) 评论(0) 推荐(0) 编辑

类加载器命名空间深度解析与实例分析
摘要:在上一次【https://www.cnblogs.com/webor2006/p/9157626.html】最后写了一个貌似没啥意义的程序,回顾一下: 其结果为true的原因并非是因为loader1和loader2都是MyTest16的实例哈,如果是这样理解的话说明对类的双亲委托机制就不太了解,这里 阅读全文

posted @ 2018-06-08 22:38 cexo 阅读(446) 评论(0) 推荐(2) 编辑

类加载器实战剖析与疑难点解析
摘要:对于类加载器之前有这样一张图,回顾一下: 也就是不同的类加载器其加载的具体目录是不一样的,那能否通过代码将这些类加载器所加载的目录打印出来直观的感受一下?当然可以,下面就来尝试一下: 编译运行: 【注意】:因为我是在mac上运行的,所以目录与目录之间的间隔以“:”分隔。 其中可以看一下应用类加载器所 阅读全文

posted @ 2018-06-08 21:26 cexo 阅读(295) 评论(0) 推荐(0) 编辑

类加载器命名空间实战剖析与透彻理解
摘要:基于上一次【https://www.cnblogs.com/webor2006/p/9129149.html】的程序进一步进行修改: 编译运行: 此时咱们在设置的桌面路径中将MySample.class、MyCat.class文件拷进来,如下: 此时再次运行: 依然是由系统类加载器来加载,也很好理解 阅读全文

posted @ 2018-06-08 13:54 cexo 阅读(520) 评论(1) 推荐(1) 编辑

自定义类加载器在复杂类加载情况下的运行分析
摘要:在之前咱们都在研究自定义类加载器的一些东东,不过接一来的学习还会依托于之前咱们写的MyTest16这个自定义类加载器,这里先再回顾一下: 而对于之前咱们加载的类都是一个比较简单的类,如MyTest1: 但是在日常开发中可能常见的用法是方法里面会使用其它的类,那如果是这种情况类的加载的流程是一个什么情 阅读全文

posted @ 2018-06-03 14:26 cexo 阅读(265) 评论(0) 推荐(0) 编辑

类的命名空间与卸载详解及jvisualvm使用
摘要:类的命名空间详解: 在上一次【https://www.cnblogs.com/webor2006/p/9108301.html】最后实验中有一个违背咱们理解的,这里回顾一下: 也就是说,"某一个类对应的class文件只能被加载一次",这是有一个大前提的,该前提就是"该类加载器必须是在同一个命名空间里 阅读全文

posted @ 2018-06-01 22:11 cexo 阅读(381) 评论(0) 推荐(0) 编辑

类加载器双亲委托机制实例深度剖析
摘要:在上一次【https://i.cnblogs.com/posts?categoryid=1154466】分析自定义类加载器的核心方法中还差一个,如下: 所以点进去瞅一下官网的说明: 下面仔细读一下这个方法的javadoc: 这个findClass()也就是咱们在自定义类加载器时所覆写的。 如下: 另 阅读全文

posted @ 2018-05-29 22:27 cexo 阅读(308) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 下一页

导航