![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
qq_41911762
为每行代码增添注释
展开
-
java中的强引用、软引用、弱引用、虚引用
强引用普通的new一个对象比如,Object obj = new Object(),obj就是强引用,一个对象只要被强引用指向,那么这个对象就不会被回收。软引用软引用相对强引用要弱化一些,当对象有弱引用而无强引用关联时,当内存空间足够的时候,垃圾回收器不会回收它。适合用在缓存的应用场景中,如果内存充足,则可以缓存业务数据,如果内存不够则可以将其指向的对象回收。弱引用在垃圾回收时...原创 2020-03-06 01:29:31 · 169 阅读 · 0 评论 -
对象的finalize()方法作用是什么
Object的finalize()方法的作用是什么?答:finalize()的作用是为对象创造最后一次逃脱死亡的机会。当垃圾回收器宣告一个对象死亡时,至少要经过两次的标记过程,如果对象在进行可达性分析后,发现对象该没有和GC Roots相连接的引用链,就会被第一次标记,并且判断是否执行finalize()方法,如果对象覆盖finalize()方法且未被引用过,这个对象就会被放置在F-Queue...原创 2020-03-06 00:25:35 · 2520 阅读 · 0 评论 -
java常见垃圾收集器
一、垃圾回收相关理论Stop-The-Word(STW):JVM要执行GC而停止应用程序的运行,STW会在任何一种GC算法中发生,除了GC线程之外所有线程都处于等待状态,多数GC优化通过减少STW的时间来提升系统吞吐量。Safepoint(安全点):分析对象引用关系的时候,所有线程在这个点被冻结,不可以出现对象引用关系还在变化的情况,分析结果要在某个节点有确定性,该节点叫做安全点。产生安全...原创 2020-03-05 19:46:04 · 138 阅读 · 0 评论 -
java垃圾回收算法
垃圾标记算法要回收垃圾,则要知道哪些是垃圾引用计数算法(判断对象的引用数量,每个对象实例都有一个引用计数器,被引用+1、完成引用-1) 优点:执行效率高,程序执行受影响较小 缺点:无法检测出循环引用的情况,导致内存泄漏可达性分析算法(判断对象的引用链是否可达来决定对象是否可以被回收) 可以作为g...原创 2020-03-05 10:40:12 · 126 阅读 · 0 评论 -
forName已经完成初始化,那么为什么还要用loadClass呢?
有些情况是只需要知道这个类的存在而不需要初始化的情况使用Classloder.loaderClass,如springIOC懒加载,而有些时候又必须执行初始化就选择Class.forName,比如JDBC注册驱动。Driver在static块中会注册自己到java.sql.DriverManager。而static块就是在Class的初始化中被执行。package com.mysql.cj...原创 2020-03-04 10:59:11 · 199 阅读 · 0 评论 -
类加载过程及forName()和loadClass()的区别
类加载过程:1.加载:通过ClassLoader加载class文件字节码,生成Class对象。2.链接:校验:检查加载的class的正确性和安全性。 准备:为类变量分配存储空间并设置类变量初始值。 解析:jvm将常量池内的符号引用转换为直接引用。3.初始化:执行类变量赋值和静态代码块。区别:loadClass只执行到“...原创 2020-03-04 10:30:41 · 139 阅读 · 0 评论 -
JDBC为什么破坏双亲委派模型
详细见原文https://www.cnblogs.com/yueshutong/p/11430885.html讲得非常详细,找了很多文章,就这篇讲的非常清楚,所以总结一下简单来说DriverManager位于 $JAVA_HOME中jre/lib/rt.jar 包,由BootStrap类加载器加载,而其Driver接口的实现类是位于服务商提供的 Jar 包,根据类加载机制,当被装载的...转载 2019-12-10 01:42:02 · 725 阅读 · 1 评论 -
JVM运行时数据区
JVM运行时数据区和虚拟机内存模型运行时数据区:程序计数器,java虚拟机栈,本地方法栈,java堆,方法区。其中红色为线程隔离的数据区,蓝色为线程共享的数据区。方法区还包括:运行时常量池。虚拟机内存模型:程序计数器,java虚拟机栈,本地方法栈,java堆,方法区,运行时常量池,直接内存。直接内存不属于运行时数据区。程序计数器内存空间小,字节码解释器工作时通过改变这...原创 2019-12-09 23:25:08 · 149 阅读 · 2 评论 -
类加载
下面看两种单例:class Singleton1{ public static int count1; public static int count2=0; private static Singleton1 singleton=new Singleton1(); public static Singleton1 getInstance() { return single...原创 2019-09-25 23:14:14 · 92 阅读 · 0 评论