JVM
文章平均质量分 93
虾米_
这个作者很懒,什么都没留下…
展开
-
《深入理解Java虚拟机》读书笔记1--Java内存区域
《深入理解Java虚拟机》是我个人读过的第一本关于JVM方面的书籍。十分有幸能够读到这本书,在此对作者表示深刻的敬意不知道有没有人和我一样有类似的情况,就是一本书读完,经过一段时间之后,林林总总最后留在脑子里的并不多,很多东西又还给了作者。有人可能会说,之所以会遗忘,是因为你根本没有理解。我并不否认这点,说实话,很多书读过一遍之后都会存在没有读懂的部分。但是随着我们阅历的丰富以及期间不断的学习,过原创 2017-12-29 17:50:36 · 356 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记2--垃圾收集(GC)与内存分配
垃圾收集(Garbage Collection,GC),其实主要需要完成3件事情:哪些内存需要回收?什么时候回收?如何回收?对于程序计数器、虚拟机栈以及本地方法栈,这三块内存区域是线程私有的,伴线程生,随线程死,并且每一个栈帧需要的内存在类结构确定后基本就确定了,因此对于这几块区域,内存的分配以及回收具备可确定性,当方法结束或者线程结束时,内存随之回收但是对于堆以及方法区,运行时才能确定需要创建哪原创 2017-12-30 10:32:06 · 320 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记3--类文件结构
很遗憾,这将是很枯燥的一章,但是如果想较为深入的理解JVM,这一章又很有必要硬着头皮搞清楚。如果之前没有接触过类似的内容,那么有很大的可能第一次基本读不懂,如果出现这样的情况也没有关系,请继续保持学习,并且隔段时间再次重新阅读。像我这样不够灵光的脑袋,学习了3遍也就能够掌握基本原理。其实,只要掌握了对应的规则,类文件的内容又是很容易解读的,请保持你的耐心与好奇Java号称跨平台,那么究竟是什么能够原创 2017-12-31 16:06:27 · 309 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记4--类加载机制
所谓类加载机制,就是虚拟机将Class文件加载到内存,对数据进行校验、解析、初始化,然后转化为可被虚拟机使用的数据类型的过程与静态连接的语言不通,Java采用动态连接方式,这种策略在运行时虽然会增加一些性能开销,但是却给程序提供了高度的灵活性。比如我们可以通过自定义类加载器的方式,在运行时通过网络进行类加载;也可以在运行时为一个接口指定其实现类类加载时机类的整个生命周期包括:加载、验证、准备、解析原创 2018-01-01 10:47:26 · 254 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记5--字节码执行引擎
字节码执行引擎是Java虚拟机最核心的组成部分之一。虚拟机是相对于物理机的概念,两者都有代码执行能力。不同的是物理机的执行引擎直接建立在物理硬件和操作系统层面上,而虚拟机的执行引擎则有自己的指令集,可以执行不被硬件直接支持的指令Java虚拟机规范中制定了虚拟机执行引擎的概念模型,不同的虚拟机只要满足这个概念模型的要求(输入字节码,处理过程是字节码解析的等效过程,输出执行结果),具体的实现可以自行制原创 2018-01-02 11:36:24 · 421 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记6--编译期优化
说起Java语言的编译期,它可能是指编译器把Java源码文件转变为Class字节码文件的过程,也可能是指虚拟机在运行时把字节码转变为机器代码的过程(JIT编译器,Just In Time Compiler)。本章我们来讨论一下上面提到的第一类编译过程Javac编译器我们都直接或间接的使用过Javac编译器,它可以将Java源码文件编译为Class字节码文件。Javac做了许多针对Jav原创 2018-01-04 10:01:15 · 266 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记7--运行期优化
记得在大学刚开始学习Java的时候,也许是为了让大家好理解,老师说Java是一门解释执行的语言。但是现在回顾这句话,这种说法可能就不是那么准确了实际上,Java程序在启动最初是通过解释器进行解释执行的,但是当某个方法或者代码运行非常频繁的时候,虚拟机就会把这部分代码视为“热点代码”(Hot Spot Code),在运行时将这部分代码编译成平台相关的机器码,并且进行各种层次的优化,以提高热点原创 2018-01-08 16:33:59 · 499 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记8--Java内存模型与线程
在许多情况下,让计算机同时处理多个任务,不仅是因为计算机的处理能力太强大,另一个重要的原因是计算机的计算速度与它的存储和通信系统速度差距太大,大量时间被浪费在磁盘及网络IO上硬件效率与一致性虚拟机在处理并发时遇到的问题与物理机有不少类似,因此我们先来简单看一下物理机针对并发的处理方案由于计算机存储设备与计算速度之间有几个数量级的差距(即使内存也是如此),因此在内存与处理器之原创 2018-01-27 16:09:20 · 346 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记9--线程安全与锁优化
线程安全线程安全,耳熟能详,但想准确的描述并不容易。这里借用《Java Concurrency In Practice》作者Brian Goetz对其的一个定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者再调用方法进行任何其他的协调操作,调用这个对象的行为就可以获得正确的结果,那这个对象是线程安全的”这个定义比较完整,它原创 2018-02-07 21:22:09 · 294 阅读 · 0 评论