JVM
文章平均质量分 89
五敷有你
稳中求进,多平安
展开
-
【JVM】垃圾回收算法
Java是如何实现垃圾回收的呢?简单来说,垃圾回收就做两件事。原创 2024-02-23 10:43:39 · 2830 阅读 · 34 评论 -
【JVM】五种对象引用
终结器引用指的是在对象需要被回收时,终结器引用会关联对象并放置在Finalizer类中的引用队列中,在稍后由一条由FinalizerThread线程从队列中获取对象,然后执行对象的finalize方法,在对象第二次被回收时,该对象才真正的被回收。软引用相对于强引用是一种比较弱的引用关系,如果一个对象只有软引用关联到它,当程序内存不足时,就会将软引用中的数据进行回收。可达性算法中描述的对象引用,一般指的是强引用,即是GCRoot对象对普通对象有引用关系,只要这层关系存在,普通对象就不会被回收。原创 2024-02-22 14:39:03 · 1476 阅读 · 8 评论 -
【JVM】计数器引用和可达性分析
在C/C++这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏。我们称这种释放对象的过程为垃圾回收,而需要程序员编写代码进行回收的方式为手动回收。内存泄漏指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出。原创 2024-02-21 16:58:17 · 1276 阅读 · 10 评论 -
【JVM】运行时数据区
程序计数器(Program Counter Register)也叫PC寄存器,每个线程会通过程序计数器记录当前要执行的的字节码指令的地址。在多线程执行情况下,Java虚拟机需要通过程序计数器记录CPU切换前解释执行到那一句指令并继续解释运行。原创 2024-02-20 11:44:35 · 1496 阅读 · 7 评论 -
【JVM】双亲委派机制
当一个类加载器接受到加载类的任务时,会自底向上查找是否加载过,在由顶向下进行加载。不能,会返回启动类加载器在rt.jar包中的String类。使用arthas来看类加载器 classloader -t。启动类加载器,根据双亲委派机制,它的优先级是最高的。类的双亲委派机制是什么。原创 2024-02-19 12:19:35 · 1111 阅读 · 0 评论 -
【JVM】打破双亲委派机制
启动类加载器加载DriverManager在初始化DriverManager时,通过SPI机制加载Jar包中的mysql驱动SPI中利用线程上下文类加载器(应用程序类加载器) 去加载并创建对象。类加载器(ClassLoader)负责在类加载过程中的字节码获取并加载到内存这一部分。通过加载字节码数据放入内存转换成byte[],接下来调用虚拟机底层方法将byte[]转换成方法区和堆中的数据每个Java实现的类加载器中保存了一个成员变量叫“父”(Parent)类加载器。原创 2024-02-18 12:05:57 · 2770 阅读 · 51 评论 -
【JVM】类加载器
classloader - 查看 classloader 的继承树,urls,类加载信息, 使用classloader去getResource。启动类加载器(Bootstrap ClassLoader)是由Hotspot虚拟机提供的,使用C++编写的类加载器。拓展类加载器(Extension Class Loader)是JDK中提供的,使用Java编写的类加载器。拓展类加载器和应用程序类加载器都是JDK中提供的,使用Java编写的类加载器。默认加载Java安装目录/jre/lib/ext下的类文件。原创 2024-02-17 13:57:53 · 759 阅读 · 5 评论 -
【JVM】类的生命周期
加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。类加载器在加载完类之后,Java虚拟机会将字节码中的信息保存到内存的方法区中生成一个InstanceKlass对象保存类的所有信息,里面还包含实现特定功能,比如多态的信息。4.同时,Java虚拟机还会在堆中生成一份与方法区中数据类似的java.lang.Class对象作用是在Java代码中去获取类的信息,以及存储静态字段的数据(JDK8之后)原创 2024-02-03 10:10:41 · 1150 阅读 · 16 评论