
JVM
文章平均质量分 90
代码匠心印记
工作场景分享: 解决实际工作中遇到的问题,提供实用的代码示例,提高工作效率。
学习技巧: 分享学习过程中的心得体会,以及一些提高编程技能的小技巧。
日常生活代码: 在日常生活中,代码不仅仅是解决问题的工具,还可以带来更多的创意和乐趣。这里分享一些有趣的、实用的日常代码。
展开
-
JVM-垃圾收集器G1
主要针对配备多个处理器及大容量内存的机器拆分成很多大小相等的Region。每个Region大小计算规则?可设置垃圾回收预期时间。对象不停的在新生代里分配,新生代的Region会不断增加,Eden和Survivor对应的Region也会不断增加。对象在新生代躲过了很多次的垃圾回收大对象的Region叫Humongous区大对象的判定规则就是一 个大对象超过了一个Region大小的50%Humongous区专门存放短期巨型对象可以节约老年代的空间,避免因为老年代空间不够的GC开 销。原创 2024-03-08 22:40:26 · 1737 阅读 · 0 评论 -
JVM-垃圾收集底层算法实现
事实上并不只是新生代、 老年代之间才有跨代引用的问题, 所有涉及部分区域收集 (Partial GC) 行为的垃圾收集器, 典型的如G1、 ZGC和Shenandoah收集器, 都会面临相同的问题。显然在可达性分析刚刚开始的阶段, 所有的对象都是白色的, 若在分析结束的阶段, 仍然是白色的对象, 即代表不可达。在并发扫描结束之后, 再将这些记录过的引用关系中的灰色对象为根, 重新扫描一次,这样就能扫描到白色的对象,将白色对象直接标记为黑 色(,其对应的卡表的元素标识就变成1,表示该元素变脏,否则为0.原创 2024-03-08 22:34:46 · 923 阅读 · 0 评论 -
JVM-垃圾收集器
时,则证明此对象是不可用的。如下图所示,对象object 5、object 6、object 7虽然互相有关联,它们的引用并不为0,但是它们到GC Roots是不可达的,因此它们将会被判定为是可回收的对象。在初始标记阶段,仅仅会通过“replicaManager”这个类的静态变量代表的GC Roots,去标记出来他直接引用的ReplicaManager对象,这就是初始标记的过程。标记过程就是对象是否属于垃圾的判定过程(也可以反过来标记出所有需要回 收的对象,在标记完成后,统一回收掉所有被标记的对象)原创 2024-03-07 19:23:40 · 1003 阅读 · 0 评论 -
JVM-对象创建与内存分配机制深度剖析 3
当前放对象的Survivor区域里(其中一块区域,放对象的那块s区),一批对象的总大小大于这块Survivor区域内存大小的50%(-XX:TargetSurvivorRatio可以指定),那么此时大于等于这批对象年龄最大值的对象,就可以直接进入老年代了,如果Java堆中的内存并不是规整的,已使用的内存和空 闲的内存相互交错,那就没有办法简单地进行指针碰撞了,虚拟 机就必须维护一个列表,记 录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例, 并更新列表上的记录。原创 2024-03-07 12:40:03 · 1258 阅读 · 0 评论 -
JVM-整体结构原理深度解析
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合 C/C++程序,Java诞生的时候是C/C++横行的时候,要想立足,必须有调用C/C++程序,于是就。主要是调用c或c++实现的本地接口。总体而言,具体的存储位置取决于Java虚拟机的实现版本,而在现代的Java虚拟机中,元空间是类元数据信息的存储区域。原创 2024-03-06 17:40:15 · 1053 阅读 · 0 评论 -
JVM-类加载机制
jvm类加载机制原创 2024-03-06 10:05:16 · 1188 阅读 · 0 评论