白话JVM
文章平均质量分 90
江湖人称小白哥
从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事
展开
-
编译器常用优化方法
常量传播 、常量折叠 、内联、公共子表达式原创 2015-10-29 18:38:58 · 7348 阅读 · 0 评论 -
OpenJDK系列(三):VM对CAS的设计与实现
CAS简介CAS即Compare-and-Swap的缩写,即比较并交换,它是一种实现乐观锁的技术.在CAS中包含三个操作数:V: 需要读写的内存位置,从java角度你可以把它当成一个变量A: 预期值,也就是要进行比较的值B: 拟写入的新值当且仅当V的值等于A时,CAS才会通过原子方式用新值B来更新V的值,否则不会执行任何操作.无论位置V的值是否等于A,最终都会返回V原有的值.换...原创 2018-09-10 16:37:18 · 1170 阅读 · 0 评论 -
OpenJDK系列(二):从ClassFileParser谈Endian
EndianEndian即所谓的字节序,通俗点说就是多于一个类型的数据在内存中存取的顺序目前有两种字节序.Big-Endian: 也称为大端序:高位字节存放在内存的低地址端,低位字节存放在内存的高地址端.Little-Endian: 也称为小端序:高位字节存放在内存的高地址端,低位字节存放在内存的低地址端.Endian与内存单元对于0x12345678而言,1234是高四...原创 2018-09-05 17:03:29 · 1434 阅读 · 0 评论 -
不一样的视角:从JVM内存模型谈线程安全
从内存模型谈线程安全原创 2017-02-28 00:40:38 · 7706 阅读 · 7 评论 -
深入JVM字节码执行引擎
我们都知道,在当前的Java中(1.0)之后,编译器讲源代码转成字节码,那么字节码如何被执行的呢?这就涉及到了JVM的字节码执行引擎,执行引擎负责具体的代码调用及执行过程。原创 2015-10-30 18:57:11 · 14099 阅读 · 7 评论 -
深入JVM对象引用
在jdk 1.2以前,创建的对象只有处在可触及(reachaable)状态下,才能被程序所以使用,垃圾回收器一旦发现无用对象,便会对其进行回收。但是,在某些情况下,我们希望有些对象不需要立刻回收或者说从全局的角度来说并没有立刻回收的必要性。原创 2015-11-17 12:19:31 · 14056 阅读 · 2 评论 -
深入JVM内存区域
JVM内存区域的划分和C/C++开发不同,在从事JAVA的开发过程中,我们对内存区域的关注相对较轻,但是了解和掌握JAVA的内存结构会帮助我们做出合理的优化决策。原创 2015-11-12 12:22:56 · 2053 阅读 · 0 评论 -
深入JVM类加载机制
类加载的流程以及双亲委派模型原创 2015-11-13 14:13:19 · 22567 阅读 · 10 评论 -
谈乱序执行和内存屏障
十多年前的程序员对处理器乱序执行和内存屏障应该是很熟悉的,但随着计算机技术突飞猛进的发展,我们离底层原理越来越远,这并不是一件坏事,但在有些情况下了解一些底层原理有助于我们更好的工作,比如现代高级语言多提供了多线程并发技术,如果不深入下来,那么有些由多线程造成问题就很难排查和理解.原创 2017-02-22 19:21:15 · 23331 阅读 · 7 评论 -
深入JVM关闭与关闭钩子
通常而言,对于JVM的关闭我们很少去关注,但是了解JVM的关闭能帮我们在JVM关闭时做一些合理的事情。原创 2015-10-15 17:13:16 · 12918 阅读 · 1 评论 -
深入JVM垃圾回收算法
回收JVM堆中常用的算法:1. 标记——清除算法2. 标记——复制算法3. 标记——整理算法4. 分代收集算法5. 增量收集算法原创 2015-11-28 15:31:40 · 20537 阅读 · 10 评论 -
OpenJDK系列(四):从JVM谈C/C++编译流程
编译器的这点事gcc和g++还傻傻分不清楚?clang与gcc有什么关系?llvm又是什么?下面将对一些常见的名词进行说明以免在后续阅读中感到疑惑.gcc和g++gcc 即 GNU C Compiler, 刚开始它就是一个c编译器项目。后来越来越多的其他语言编译器也被添加到这个项目中,如用于编译c++代码的cc1plus.此时的gcc代表的是一堆编译器的集合(the GNU Compiler...原创 2018-09-29 23:19:20 · 2490 阅读 · 1 评论