
JVM学习笔记
雨落轻舟
栉风沐雨,砥砺前行!
展开
-
JVM学习笔记(七) --- 垃圾收集器第三季及监控工具
CMS收集器CMS收集器是一种以获取最短停顿时间为目标的收集器。从名字(Concurrent Mark Sweep)上就可以看出,采用的标记-清除算法,它的过程分为4个步骤:只有初始标记和重新标记需要暂停用户线程。初始标记 — 仅仅关联GC Roots能直接关联到的对象,速度很快并发标记 — 进行GC Roots Tracing的过程,重新标记 — 为了修正并发标记期间,因用...原创 2019-11-29 22:23:47 · 300 阅读 · 0 评论 -
JVM学习笔记(六) --- 垃圾收集器第二季
Parallel Scavenge收集器Parallel Scavenge收集器是一个新生代收集器,采用复制算法,又是并行的多线程垃圾收集器。它的关注点与其它收集器的关注点不一样,CMS等收集器的关注点在于缩短垃圾回收时用户线程停止的时间,而Parallel Scavenge收集器则是达到一个可控制的吞吐量,所谓吞吐量就是CPU运行用户线程的时间与CPU运行总时间的比值,即 吞吐量 = (用...原创 2019-11-25 19:32:36 · 259 阅读 · 0 评论 -
JVM学习笔记(五) --- 垃圾收集器第一季
Serial收集器Serial收集器是最基本,发展最悠久的收集器,在JDK1.3.1之前是虚拟机新生代垃圾回收的唯一选择。这个收集器是一个单线程的。它的单线程的意义并不仅仅说明它只会使用一个CPU或者一条收集线程去完成收集工作,最重要的是,它进行垃圾收集时,其他工作线程会暂停,直到收集结束。这项工作由虚拟机在后台自动发起和执行的,在用户不可见的情况下将所有工作线程全部停掉,这对于很多应用程序来说...原创 2019-11-24 22:52:06 · 276 阅读 · 0 评论 -
JVM学习笔记(四)---垃圾回收算法
垃圾收集算法: 标记-清除算法: 最基础的收集算法是标记-清除算法,如同它的名字一样,分为标记和清除两个阶段。第一步标记出所要回收的对象,在标记完成后统一回收所有被标记的对象。如何标记已经在上面说过了,之所以说它是最基本的垃圾收集算法,原因在于其他的算法也是基于这种思路并对其不足做以改进得到的。主要问题有两个,第一个是效率问题,标记和清除的效率都不高。 第二个是空间分配问题,标记清...原创 2019-11-24 18:43:26 · 386 阅读 · 0 评论 -
JVM学习笔记(一)---JVM的基本组成
jvm的基本组成虚拟机的组成所谓java能实现跨平台,是因为在不同平台上运行不同的虚拟机决定的,因此java文件的执行不直接在操作系统上执行,而是通过jvm虚拟机执行,我们可以从这张图看到,JVM并没有直接与硬件打交道,而是与操作系统交互用以执行java程序。类加载过程这张图是jvm的组成图,分为四部分:类加载器 类加载器的作用是加载类文件到内存。比如我们写一个HelloW...原创 2019-11-22 19:16:48 · 1356 阅读 · 1 评论 -
JVM学习笔记(二)---jvm的内存区域
内存区域概述: 对于从事C或者C++的程序员来说,必须对每个对象的整个生命周期负责。但是对java程序员来说,在jvm的自动内存管理机制下,不需要为每一个对象去写delete或者free代码,不容易出现内存泄漏或内存溢出的问题。但正因为java程序员将内存管理权力交给了内存管理机制,所以一旦出现内存泄漏或者内存溢出的问题,在对jvm内存结构不清楚的情况下,排查错误将会成为一项非常复杂且困难...原创 2019-11-22 19:18:28 · 474 阅读 · 0 评论 -
JVM学习笔记(三)---JVM判断对象已死的方法
判断对象已死的算法在堆里面存放着各种各类的Java对象,垃圾收集器在对堆进行垃圾回收时,首要就是判断哪些对象还活着,哪些对象已经死去(即不被任何途径引用的对象)。标记清除算法:标记清除算法简单概括为:给对象添加一个引用计数器,每当有一个地方引用该对象时,计数器+1,当引用失效时,计数器-1,任何时刻,当计数器为0的时候,该对象不再被引用。客观的说,引用计数器的实现简单,判定效率也高,大...原创 2019-11-23 21:48:26 · 310 阅读 · 0 评论