![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
进击的Coder*
这个作者很懒,什么都没留下…
展开
-
JVM:详解CMS垃圾收集器,一篇搞定面试官
CMS,也即Concurrent Mark Sweep,基于标记-清除算法实现。CMS的目标在于缩短STW时间(stop the world),适用于网站应用以及B/S架构的服务器端。CMS垃圾回收器在进行垃圾回收时,主要经历以下步骤:1. 初始标记该阶段需要STW,工作线程需暂停。初始标记阶段的任务在于标记老年代、元空间中能够被GC Roots能够直接关联到的对象,老年代中可直接关联的对象可分为两种,被年轻代对象引用、被老年代对象引用。2. 并发标记...原创 2021-09-23 19:38:28 · 237 阅读 · 0 评论 -
JVM GC 垃圾回收详解(更新中~)
一、GC作用区域GC垃圾回收作用区域集中于堆和方法区。栈由于先进后出的特性,所有存在于栈中的方法或者变量等,最后都会出栈。因此,栈中不存在可回收的垃圾。二、GC如何判定垃圾GC进行垃圾回收,前提是确认哪些对象为垃圾。只有确定了垃圾对象后,方可对垃圾对象进行回收。垃圾定位主要涉及两种方法:引用计数法、可达性分析法。1. 引用计数法Java对象头中分配了一个空间来记录对象被引用的次数,当对象引用次数为0时,可认定该对象可被回收、释放。引用计数法的优点在于实现简单,缺点在于无法应对循环原创 2021-09-05 15:43:06 · 342 阅读 · 0 评论 -
Java类加载器
一、类加载过程Java类加载过程如下图所示:加载 --> 链接 --> 初始化。(一)加载JVM在加载,需要完成3件事:1. 通过类的全限定名来获取此类的二进制字节流2. 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3. 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。(二)链接链接过程分为3步:验证 --> 准备 --> 解析。1. 验证确保Class文件中的字节流中包原创 2021-09-03 18:31:34 · 347 阅读 · 0 评论 -
JVM系列:新生代对象何时进入老年代
在JVM中,对象被创建的时候,通常是在栈的新生代的。那么,新生代对象什么时候会进入到老年代呢?1. 达到晋升年龄:新生代对象在经历每次GC的时候,如果没有被回收,则对象的年龄+1。当年龄超过阈值的时候,便会进入老年代。默认情况下,阈值为15,可通过-XX:MaxTenuringThreshold参数来进行调节。那么,为什么默认是15呢?因为Mark Word中,每个对象头用一个4bit标志位来记录对象的年龄,而4bit标志位最大只能表示15。2. 如果创建的对象很大的时候,直接进入老年代。可以通过-原创 2021-05-11 22:52:14 · 3199 阅读 · 2 评论