JVM
åå
一个初出茅庐的程序猿。
展开
-
jvm学习篇04 - 类加载机制
《深入理解Java虚拟机》读后速记。 类加载机制的概念 虚拟机把描述类的数据从Class文件中加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程就称之为虚拟机的类加载机制。 类加载的时机 一个类的生命周期包括如下七个阶段:加载、验证、准备、解析、初始化、使用、卸载,其中验证、准备、解析统称为连接。一般来说这些过程都是按顺序开始执行的(注意这里是“开始”,因此每个过程都不必等待前一个过程完成之后才能开始执行,他们是相互交叉混合进行的),除了解析这个过程,它也原创 2020-11-09 23:12:42 · 112 阅读 · 1 评论 -
jvm学习篇01 - 垃圾回收机制
垃圾回收机制 判断一个对象是否回收 引用计数器:每个对象都有一个引用计数器,当存在某个地方引用了该对象,则该对象引用计数器就加1,当某个对象的引用计数器值为0时证明没有其他地方引用了该对象,则该对象就是可以被回收的。但是这种方式存在循环引用的问题,因此Java不使用这种方式。 可达性分析算法:以一组GC Roots为起点,根据引用关系向下搜索,走过的路径我们称之为引用链,若某个对象存在到GC Roots的引用链,则该对象是可达的,这些对象就是存活的不会被垃圾收集器回收。若不可达的对象,要真正宣告该对象死亡原创 2020-09-22 00:04:06 · 120 阅读 · 0 评论 -
jvm学习篇03 - Java与线程
《深入理解Java虚拟机》读后总结。 通用的角度看实现线程三种方式 内核线程实现 内核线程KLT(Kernel-Level Thread) 是由操作系统内核所支持的线程,内核通过 调度器(Thread Scheduler) 对线程进行调度。程序一般不会直接使用内核线程,而是使用内核线程的高级接口——轻量级进程,也就是我们所说的线程。每个轻量级进程都由一个内核线程支持,因此只有先支持内核线程才支持轻量级继承。 这种内核线程和轻量级进程1:1的关系称为一对一的线程模型。 优点:由于每一个轻量级进程都有一个内核原创 2020-11-01 16:27:32 · 117 阅读 · 0 评论 -
jvm学习篇02 - Java内存模型
还是《深入理解Java虚拟机》的一些读后总结。 这一部分主要涉及到“如何高效并发”的问题,虚拟机如何实现在多线程环境下,解决各个线程因为共享和竞争数据而带来的一系列问题。 高速缓存与指令重排序 为了充分利用CPU资源: (1)由于计算机的内存读写速度与CPU的运算速度存在几个量级的差距,因此在内存与CPU之间引入了读写速度接近于CPU的高速缓存作为缓冲。 内存将需要运算的数据复制到缓存中,让运算能快速进行;CPU在运算完之后将结果复制到缓存中,再同步回主存。这样CPU就无需等待缓慢的内存读写了。 每个处理器原创 2020-11-01 13:43:16 · 78 阅读 · 0 评论