java虚拟机
文章平均质量分 93
深入理解java虚拟机
初念初恋
Java高级开发工程师,主要分享Java技术相关的东西,包括但不限于源码解析、面试宝典、日常问题排查、工作趣文等等。
展开
-
【JVM系列】垃圾收集器介绍
初始标记仅仅只是标记一下GC Roots能直接关联到的对象,速度很快,并发标记阶段就是进行GC Roots Tracing的过程,而重新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的时间短。Remark, 再标记,会有短暂停顿(STW)。由于整个过程中耗时最长的并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行。原创 2023-06-15 08:28:31 · 441 阅读 · 0 评论 -
【JVM系列】GC算法介绍
垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。原创 2023-06-14 14:37:40 · 717 阅读 · 0 评论 -
【JVM系列】内存分配与回收策略详解
当我们new一个对象实例时,首先是存入堆中新生代中的伊甸园区,如果伊甸园区空间满了,就会进行YGC,本篇文章就讲述一下对象的分配过程是如何的…什么时候进行GC呢?当伊甸园区满的时候才会进行GC,幸存区满的时候不会进行GC,只有当伊甸园区满的时候,幸存区才会被动进行GC。关于幸存者S0和S1区:复制之后有交换,谁空谁是To;对于垃圾回收:频繁在新生区进行回收,很少在老年区收集,几乎不在永久区/元空间收集。原创 2023-06-15 08:37:31 · 579 阅读 · 0 评论 -
【JVM系列】jvm内存结构详解
我们为什么要学习JVM?面试的需要中高级程序员的必备技能(项目管理、调优的需要)极客精神( 比如:垃圾算法回收、JIT、底层原理)HotSpot历史最初由一加名为"Longview Technologies"的小公司设计。1997年,此公司被Sun收购;2009年,Sun公司被甲骨文收购。JDK1.3时,HotSpot VM称为默认虚拟机。目前HotSpot占有绝对的时长地位,称霸武林。不管是现在仍在广泛使用的JDK6,还是使用比例较多的JDK8中,默认的虚拟机都是HotSpot。原创 2023-06-14 08:30:03 · 641 阅读 · 0 评论 -
【JVM系列】java类加载机制详解
将二进制文件的静态存储结构转化为方法区的运行时数据结构,并利用二进制流文件创建一个Class对象,存储在 Java 堆中用于对方法区的数据结构引用的入口;而且此时类变量是赋值为零值,即 int 类型的零值为 0,引用类型零值为 null,而不是代码中显示赋值的数值。在准备阶段,类变量已经被赋过默认初始值,而在初始化阶段,类变量将被赋值为代码期望赋的值。第 6 行表示调用 Test02父类 Object 的无参构造,我们知道每个对象在实例化的时候都会默认先实例化其父类对象,并且默认调用父类的无参构造。原创 2023-06-16 08:25:20 · 315 阅读 · 0 评论