Java的扩容机制

2023-11-19

类别 初始容量 扩容方式 最大容量
HashMap 16 达到0.75就乘2 2的30次方
HashSet 16 达到0.75就乘2 2的30次方
Hashtable 11 达到0.75就乘2+1 Integer.MAX_VALUE-8
ArrayList 10 满了就乘1.5 Integer.MAX_VALUE-8
StringBuffer 16 满了就乘2+2
StringBuilder 16 满了就乘2+2

以上扩容机制在JAVA源码中均可以找到,以HashMap为例

在这里插入图片描述
这里
DEFAULT_INITIAL_CAPACITY 代表初始容量
MAXIMUM_CAPACITY 代表最大容量
DEFAULT_LOAD_FACTOR 代表装填因子表示达到容量的0.75就扩容
在这里插入图片描述
扩容代码 ,新容量变为旧容量的2倍;新阈值变为旧阈值的两倍
(容量:capacity 阈值:threshold)

为什么 -8
因为自己作为数组,除了存储数据本身以外、还需要32 bytes的大小来存储对象头信息。Java中的每个对象都包含了对象头,HotPot虚拟机中对象头的大小不会超过32bytes,所以最大容量减8不会溢出
(1 int = 4 bytes)
小伙伴们,不明白的地方一定要去查源码哦!这样会理解更加深刻!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的扩容机制 的相关文章

随机推荐

  • Redis爬坑记(一):incr命令和expire命令的误区

    关注公众号 要实现的功能 限制用户的每分钟的访问次数 一个有严重bug的代码 每次访问来了 就执行代码块二 当第一次访问 就走else语句 设置当前用户的次数为1 且设置该key的有效期是一分钟 在一分钟之内 第二次来访问了 就走if语句了
  • XSS常见的触发标签

    无过滤情况 img 图片加载错误时触发 img src x img src 1 鼠标指针移动到元素时触发 img src 1 鼠标指针移出时触发 img src 1 a a href https www qq com qq a a href
  • 微信小程序开发通过mock后台数据,如何使用mock模拟后台数据,以及在小程序中使用

    作为一名前端开发人员 应该有很多像我一样不会写后台接口 但是网上非常多的项目都是需要后台数据支持的 这个时候前端开发人员可能会犯愁 现在我给大家推荐一个网站 可以帮助我们简单模拟后代数据 1 首先 在该网址https www fastmoc
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • Windows10自动更新-修改注册表

    Win r 输入 regedit 打开注册表 注册表路径 HKEY LOCAL MACHINE SYSTEM ControlSet001 Services wuauserv Parameters 后面加了个 disable 方便以后改回来
  • 比较两个 List 的值是否相等

    public static
  • python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    前言 1 环境准备 python3 6 requests xlrd openpyxl HTMLTestRunner api 2 目前实现的功能 封装requests请求方法 在excel填写接口请求参数 运行完后 重新生成一个excel报告
  • Flutter进阶实战 6-20 酷炫的路由动画-2

    前言 前面在路由动画1中我们介绍了 渐隐渐现过度动画 的使用 这里再介绍三种动画以及叠加动画的使用 一 缩放路由动画 return ScaleTransition scale Tween begin 0 0 end 1 0 animate
  • 保存文件为UTF8格式(Writing UTF-8 files in C++).

    都是简单的单词 我就不翻译了 原文地址 http mariusbancila ro blog 2008 10 20 writing utf 8 files in c Let s say you need to write an XML fi
  • Ant design 组件实现动态列表

    文章目录 一 动态列表 二 场景实现 实现效果 实现代码 一 动态列表 动态列表Form List是包含多个表单的情况 往往是多维数组数据 意思就是往往这个数据传递到后端是数组数据 二 场景实现 实现效果 实现代码 import React
  • Nacos快速入门(一):Nacos初探

    1 简介 Nacos官网 https nacos io zh cn index html 1 1 概览 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 帮助您快速实现动态服务发现 服务配置 服务元数据
  • Linux_CentOS8_磁盘管理_磁盘大小调整_`No space left on device` (2)

    Issue CentOS8 in the VMware No space left on device 1 Issue Description Initially 20G Hard Disk SCSI was portioned to th
  • Python的复制,深拷贝和浅拷贝的区别

    在python中 对象赋值实际上是对象的引用 当创建一个对象 然后把它赋给另一个变量的时候 python并没有拷贝这个对象 而只是拷贝了这个对象的引用 一般有三种方法 alist 1 2 3 a b 1 直接赋值 传递对象的引用而已 原始列
  • 三目运算的多目运算技巧(三种及三种以上的状态怎么使用)

    1 使用场景 当有人一提到三目运算就会想着用0 1代表男女等的显示问题 只有两种状态值 但你有没有想过当状态不止两种的时候 比如三种及以上的时候 也可以使用三木运算呢 答案是可以 比如常用的vue数据渲染的时候 div class Bott
  • IntelliJ Idea 常用快捷键列表

    IntelliJ Idea 常用快捷键列表 Ctrl Shift Enter 语句完成 否定完成 输入表达式时按 键 Ctrl E 最近的文件 Ctrl Shift E 最近更改的文件 Shift Click 可以关闭文件 Ctrl OR
  • linux 内核学习3-自己编译一个ARM Linux内核

    linux 内核学习3 自己编译一个ARM Linux内核 1 目的 编译一个ARM版本的内核镜像 谁让我是做Android的呢 并且在QEMU上运行 2 准备工作 2 1 开发环境 ubuntu 18 4虚拟机 linux内核版本 4 1
  • 高清人脸数据集—FFHQ

    FFHQ全称Flickr Faces Hight Quality Flickr Faces HQ 是英伟达作为生成对抗网络 GAN 的基准创建的 也用于Style GAN的训练数据集中 于2019年开源 FFHQ是一个高质量的人脸数据集 包
  • 悟空CRM9.0(JAVA版)正式发布

    悟空CRM9 0 JAVA版 悟空软件长期为企业提供企业管理软件 CRM HRM OA ERP等 的研发 实施 营销 咨询 培训 服务于一体的信息化服务 悟空软件以高科技为起点 以技术为核心 以完善的售后服务为后盾 秉承稳固与发展 求实与创
  • 归一化

    归一化方法 线性归一化 也称min max标准化 离差标准化 是对原始数据的线性变换 使得结果值映射到 0 1 之间 转换函数如下 x x
  • Java的扩容机制

    类别 初始容量 扩容方式 最大容量 HashMap 16 达到0 75就乘2 2的30次方 HashSet 16 达到0 75就乘2 2的30次方 Hashtable 11 达到0 75就乘2 1 Integer MAX VALUE 8 A