
JVM
文章平均质量分 94
秃头披风侠.
因为热爱
展开
-
【JVM】类加载器
自定义类加载器是破坏双亲委派模型的最常见方式之一。您可以继承。原创 2023-09-22 13:19:51 · 619 阅读 · 0 评论 -
【JVM】类加载的过程
client()>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static{}块)中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序决定的,静态语句块中只能访问 到定义在静态语句块之前的变量,定义在它之后的变量,在前面的静态语句块可以赋值,但是不能访问。准备阶段是正式为类中定义的变量(即静态变量,被static修饰的变量)分配内存并设置类变量初始值的阶段,这时候进行内存分配的仅包括类变量,而不包括实例变量。其中,解析是可选的,其他阶段通常都会执行。原创 2023-09-21 18:06:25 · 687 阅读 · 0 评论 -
【JVM】经典垃圾收集器
这种“双向”的卡表结构(卡表是“我指向谁”,这种结构还记录了“谁指向我”)比原来的卡表实现起来更复杂,同时由于Region数量比传统收集器的分代数量明显要多得多,因此G1收集器要比其他的传统垃 圾收集器有着更高的内存占用负担。:负责更新Region的统计数据,对各个Region的回收价值和成本进行排序,根据用户所期望的停顿时间来制定回收计划,可以自由选择任意多个Region构成回收集,然后把决定回收的那一部分Region的存活对象复制到空的Region中,再清理掉整个旧Region的全部空间。原创 2023-09-16 17:21:10 · 621 阅读 · 0 评论 -
HotSpot垃圾收集算法实现细节
在HotSpot里,使用一组称为OopMap的数据结构来存储了对象的地址。,当灰色对象要删除指向白色对象的引用关系时,就将这个要删除的引用记录下来,在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根,重新扫描 一次。,当黑色对象插入新的指向白色对象的引用关系时,就将这个新插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。指向白色对象的引用关系时,就将这个新插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。原创 2023-09-08 16:12:42 · 530 阅读 · 0 评论 -
【JVM】垃圾收集算法
标记-复制算法(Mark and Copy Algorithm)是一种用于垃圾回收的算法,它解决了标记-清除算法中出现的内存碎片问题。标记-整理算法(Mark and Compact Algorithm)是一种用于垃圾回收的算法,通常用于老年代(Old Generation)的内存回收。它是标记-清除算法的改进版本,主要解决了标记-清除算法可能导致的内存碎片问题。标记-清除算法(Mark and Sweep Algorithm)是一种经典的垃圾回收算法,用于识别和释放不再被引用的对象,从而回收内存空间。原创 2023-09-04 20:15:43 · 995 阅读 · 0 评论 -
【JVM】对象死亡判断
该算法的基本思路就是通过 一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连, 或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。:一些Java虚拟机实现采用了方法区中的数据的优化技术,可以在运行时进行热替换(HotSwap)或类的动态生成,这些技术可能会导致方法区中的一些数据被回收或替换。原创 2023-09-03 23:13:33 · 668 阅读 · 0 评论 -
【JVM】运行时数据区域
本地方法指的是用非Java语言(通常是C、C++等)编写的方法,这些方法可以通过Java的本地接口(JNI,Java Native Interface)在Java程序中调用。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。它是一个非常大的内存区域,被所有线程共享。总之,运行时常量池是在类加载后构建的一种数据结构,包含了编译时常量池中的部分内容以及在运行时生成的常量,它为Java程序提供了常量引用和操作的支持。原创 2023-08-23 02:04:59 · 792 阅读 · 0 评论