![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM底层原理
fanxs98
种一棵树最好的时间是十年前,其次是现在
展开
-
垃圾收集算法详解
目录 一、标记-清除算法 二、复制算法 三、标记-整理算法 四、分代垃圾收集算法 一、标记-清除算法 1.标记 标记出所有需要回收的对象 一次标记:在经过可达性分析算法后,对象没有与GC Root相关的引用链,那么则被第一次标记。并且进行一次筛选:当对象有必要执行finalize()方法时,则把该对象放入F-Queue队列中。 二次标记:对F-Queue队列中的对象进行二次标记。在执行finalize()方法时,如果对象重新与GC Root引用链上的任意对象建立了关联,则把他移原创 2020-09-30 16:37:35 · 125 阅读 · 0 评论 -
垃圾收集机制详解
目录 对象已死 引用 垃圾收集器 对象已死 在进行回收前垃圾收集器第一件事情就是确定哪些对象还存活,哪些已经死去,下面介绍两种基础的回收算法。 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时计数器就+1,当引用失效时计数器就-1,。任何时刻计数器等于0的对象就是不可能再被使用的。 缺点:很难解决对象间相互循环引用的问题 根搜索算法(可达性分析算法):通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Ro原创 2020-09-29 17:09:31 · 439 阅读 · 0 评论 -
JVM内存模型
一、运行时数据区 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图 二、各区域详解 1.程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示 器。 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对 于多核处理器来说是一个内核)只会执行一条线程中的指令。因此,为了线程切换后能恢复到.原创 2020-09-27 17:21:13 · 162 阅读 · 0 评论