随笔分类 -  JVM

摘要:前言 目前学习到的类加载的知识,都是基于【双亲委托机制】的。那么JDK难道就没有提供一种打破双亲委托机制的类加载机制吗? 答案是否定的。 JDK为我们提供了一种打破双亲委托模型的机制:线程上下文类加载器。 1.引出【线程上下文类加载器】 我们来复习一下JDBC执行SQL的代码【画外音:感觉回到了大学 阅读全文
posted @ 2020-09-20 21:14 可苦可乐 阅读(604) 评论(2) 推荐(0)
摘要:前言 学习类加载必然离开不了sun.misc.Launcher这个类和Class.forName()这个方法。 分析ClassLoader.getSystemClassLoader()这个流程可以明白下面几个知识点: sun.misc.Launcher的初始化 初次接触线程上下文类加载器(Threa 阅读全文
posted @ 2020-09-08 22:12 可苦可乐 阅读(4836) 评论(0) 推荐(0)
摘要:#前言 前面介绍类加载器的时候,介绍了一下命名空间这个概念。今天就通过一个例子,来详细了解一下【类加载器的命名空间】。然后通过这个例子,我们可以总结一下双亲委托模型的好处与优点。 #例1(不删除classpath下的class文件) ####首先定义一个MyPerson package com.ja 阅读全文
posted @ 2020-08-12 21:58 可苦可乐 阅读(598) 评论(0) 推荐(0)
摘要:#前言 学习类加载器就一定要自己实现一个类加载器,今天就从一个简单的自定义类加载器说起。 #自定义类加载器 ###例1 一个简单的类加载器,从一个给定的二进制名字读取一个字节码文件的内容,然后生成对应的class对象。 package com.jamie.jvmstudy; import java. 阅读全文
posted @ 2020-08-05 22:52 可苦可乐 阅读(520) 评论(0) 推荐(0)
摘要:#前言 学习JVM类加载器,ClassLoader这个类加载器的核心类是必须要重视的。 Notes:下方蓝色文字是自己的翻译(如果有问题请指正)。黑色文字是源文档。红色文字是自己的备注。 #ClassLoader类源码文档 public abstract class ClassLoader exte 阅读全文
posted @ 2020-08-01 14:50 可苦可乐 阅读(282) 评论(0) 推荐(0)
摘要:#什么是Java内存模型 《Java虚拟机规范》中曾试图定义一种“Java内存模型”(Java Memory Model,JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 在此之前,主流程序语言(如C和C++等)直接使用物理硬件和操作系统的 阅读全文
posted @ 2020-07-30 22:12 可苦可乐 阅读(203) 评论(0) 推荐(0)
摘要:#前言 其实之前大家都了解过volatile,它的第一个作用是保证内存可见,第二个作用是禁止指令重排序。今天系统学习下为什么CPU会指令重排。 存储器的层次结构图 #1.CPU乱序执行指令的根源 CPU读取数据的时候会先从离自己最近且速度最快的L1_cache高速缓存取数据,取不到就找L2_cach 阅读全文
posted @ 2020-07-21 21:36 可苦可乐 阅读(426) 评论(0) 推荐(0)
摘要:#前言 今天学习了Java内存模型第一课的视频,讲了硬件层面的知识,还是和大学时一样,醍醐灌顶。老师讲得太好了。 Java内存模型,感觉以前学得比较抽象。很繁杂,抽象。 这次试着系统一点跟着2个老师学习一下。 学习Java内存模型目的: 1.高并发情况下,java内存模型是怎么提供支持的? 2.一个 阅读全文
posted @ 2020-07-18 22:09 可苦可乐 阅读(438) 评论(0) 推荐(0)
摘要:#前言 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。 所以在整个类加载阶段,类加载器的作用就只是在第一步“加载”阶段。 今天就简单记录下类加载器的基本知识。(本文的讨论都 阅读全文
posted @ 2020-07-17 22:01 可苦可乐 阅读(184) 评论(0) 推荐(0)
摘要:#前言 JAVA代码经过编译从源码变为字节码,字节码可以被JVM解读,使得JVM屏蔽了语言级别的限制。才有了现在的kotlin、Scala、Clojure、Groovy等语言。 字节码文件中描述了类的各种信息,都需要加载到虚拟机之后才能运行和使用。 简单学习了类加载进制后,写一篇文章记录一下以便加深 阅读全文
posted @ 2020-07-16 12:46 可苦可乐 阅读(225) 评论(0) 推荐(0)
摘要:第一次学习看字节码文件,这个对工作没什么用,但是会提升内功。 首先介绍两个IDEA插件以及使用: BinEd:以16进制格式查看class文件 使用方法:右键class文件,点击Open as binary JClassLib:以一种更为方便的方式查看字节码,相当于javap -v HelloWor 阅读全文
posted @ 2020-07-11 16:52 可苦可乐 阅读(327) 评论(0) 推荐(0)