自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 HashMap的扩容机制

HashMap的扩容机制:首先来了解一下几个参数:static final float DEFAULT_LOAD_FACTOR = 0.75f; //默认的负载因子 常量static final int MAXIMUM_CAPACITY = 1 << 30; //hashmap的最大容量 常量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 常量int threshold; //阀值

2021-09-28 15:01:12 264

原创 Vector的扩容机制

同样的Vector的初始化也有无参和有参无参: public Vector() { this(10); }直接给定初始容量为10;一个参数: public Vector(int initialCapacity) { this(initialCapacity, 0); }定义初始化容量大小,扩容参数为0两个参数:public Vector(int initialCapacity, int capacityIncrement) {

2021-09-27 17:46:10 420

原创 ArrayList的扩容机制

ArrayList的初始化: private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }ArrayList的容量默认大小: /** * Default initial capacity. */ priva

2021-09-27 16:16:51 100

原创 JVM要点

一、体系结构程序计数器:内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成Java 虚拟机栈:线程私有,生命周期和线程一致。描述的是 Java 方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈.

2021-09-16 18:31:44 83

原创 JVM判断对象是否死去

一、引用计数法给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能被再使用的。二、可达性分析算法通过一些列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时(就是从GC Roots 到这个对象是不可达),则证明此对象是不可用的。所以它们会被判定为可回收对象(例如图B中的对象既是不可达的)。可作为 GC Roots

2021-09-16 18:30:09 112

原创 对象的生命周期

在JVM运行空间中,对象的整个生命周期大致可以分为7个阶段:创建阶段(Creation)、应用阶段(Using)、不可视阶(Invisible)、不可到达阶段(Unreachable)、可收集阶段(Collected)、终结阶段(Finalized)与释放阶段(Free)。上面的这7个阶段,构成了 JVM中对象的完整的生命周期。创建阶段:在对象创建阶段,系统要通过下面的步骤,完成对象的创建过程:(1)为对象分配存储空间。(2)开始构造对象。(3)递归调用其超类的构造方法。

2021-09-16 18:28:53 2074

原创 CompletableFuture之有返回值异步回调

使用CompletableFuture的静态方法实例化,传入的参数为函数式接口Supplier的匿名内部类,Supplier接口只提供返回值;SupplyAsync方法中,带Async结尾的都是异步的,asyncPool参数是一个异步线程池,当useCommonPool为真时,useCommonPool等于公共池的并行线程数是否大于1当等于1时,就相当于只有一个线程,不能支持并行性则回退大于1的时候就使用公共线程池,继续执行...

2021-09-16 18:26:29 1282

原创 并发编程要点

一.Synchronized 与Lock 的区别1、Synchronized 内置的Java关键字,Lock是一个Java类2、Synchronized 无法判断获取锁的状态,Lock可以判断3、Synchronized 会自动释放锁,lock必须要手动加锁和手动释放锁!可能会遇到死锁4、Synchronized 线程1(获得锁->阻塞)、线程2(等待);lock就不一定会一直等待下去,lock会有一个trylock去尝试获取锁,不会造成长久的等待。5、Synchronized 是

2021-09-16 18:25:08 121

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除