`
cnjarchen
  • 浏览: 43845 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java初始容量设置

 
阅读更多
    我们常用Collection中的Map做Cache,但是我们经常会遗忘设置初始容量。

    初始容量的影响有多大?拿LinkedHashMap来说,初始容量如果不设置默认是16,超过16×LOAD_FACTOR,会resize(2 * table.length),扩大2倍:采用 Entry[] newTable = new Entry[newCapacity]; transfer(newTable),即整个数组Copy, 那么对于一个需要做大容量CACHE来说,从16变成一个很大的数量,需要做多少次数组复制可想而知。如果初始容量就设置很大,自然会减少resize, 不过可能会担心,初始容量设置很大时,没有Cache内容仍然会占用过大体积。其实可以参考以下表格简单计算下, 初始时还没有cache内容, 每个对象仅仅是4字节引用而已。

    不仅是map, 还有stringBuffer等,都有容量resize的过程,如果数据量很大,就不能忽视初始容量可以考虑设置下,否则不仅有频繁的resize还容易浪费容量。
分享到:
评论

相关推荐

    java中hashmap容量的初始化实现

    HashMap有多个构造函数,但我们主要关心的是`HashMap(int initialCapacity)`,它允许我们指定HashMap的初始容量。在默认的情况下,HashMap的容量是16。但是,如果我们通过构造函数指定了一个数字作为容量,那么...

    JAVA程序性能优化

    由于没有指定初始容量,`Vector`会在第一次添加元素时进行扩容,这会带来额外的时间和空间开销。更好的做法是根据预期的元素数量提前设置初始容量,以减少扩容操作: ```java public Vector v = new Vector(20); //...

    java集合类

    集合类使用初始容量和加载因子调整自己的大小。集合类全部支持泛型,是一种数据安全的用法。 Java集合框架定义了几个接口。这些集合接口决定了集合实现类的基本特性。对于不同的集合实现类提供了这些标准接口的不同...

    Java开发技术大全(500个源代码).

    errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper...

    1204 Java 遗传算法排课java sqlserver.rar_java排课算法_排课_排课系统java_遗传算法Java

    5. **排课算法实现**:遗传算法的实现通常包括初始化种群(随机生成初始的课程安排)、计算适应度(根据满足约束的程度评价解的好坏)、选择操作(依据适应度保留优秀解)、交叉操作(交换两个解的部分信息生成新解...

    java 装箱问题附有结果

    ### Java装箱问题详解 #### 一、问题背景与描述 在实际的生产和物流场景中,经常遇到如何高效地利用容器装载货物的问题。本篇文章主要介绍了一种通过编程解决装箱问题的方法。具体来说,假设我们有无限多个容量...

    基于Java实现用类描述计算机中CPU的速度和硬盘的容量【100012713】

    用类描述计算机中 CPU 的速度和硬盘的容量。要求 Java 应用程序有 4 个类,分别是 PC,CPU,HardDisk,Test,Test 是主类。 1.PC 类中设置几个属性,创建这些属性的 get,set 方法,用来传值;传创建两个构造方法用来...

    优化Java堆内存大小的五个技巧

    摘要:Java堆容量不足可以对性能造成很大影响,这样无疑就给程序带来不可必要的麻烦,本文总结了影响Java堆容量不足的五大原因以及巧妙地去优化? 本文作者Pierre是一名有10多年经验的高级系统架构师,他的主要...

    Java中StringBuffer对象的初始化.pdf

    ` 这将创建一个空的`StringBuffer`对象,初始容量通常是16个字符。 - **带参数构造器**:`StringBuffer s = new StringBuffer("abc");` 这将创建一个包含指定字符串的`StringBuffer`对象,初始容量是该字符串的长度...

    车辆路径问题 (VRP),Java 上的遗传算法解决方案_java_代码_下载

    1. **初始化种群**:随机生成一组初始的车辆路线,每条路线可以看作是一个个体,形成种群。 2. **适应度函数**:为每个个体计算适应度值,通常基于总行驶距离或成本。适应度值越高,表示该路线越优。 3. **选择...

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    1. 修改`tomcat9w.exe`中的Java选项,添加`-XX:PermSize=128m`和`-XX:MaxPermSize=256m`,以及`-Xms`和`-Xmx`来设置初始和最大堆内存。 2. 在`service.bat`文件中,添加`JAVA_OPTS`设置,包括`-Xms`、`-Xmx`、`-XX:...

    java代码优化编程

    13. 设置`StringBuffer`初始容量:在创建`StringBuffer`时指定合适的初始容量,可以减少扩容操作,提高性能。 总的来说,优化Java代码涉及多个方面,包括设计良好的数据结构、合理使用API、避免不必要的计算、有效...

    java vector

    3. **初始容量和增量**:`Vector`允许用户在创建时指定初始容量和每次扩展的增量。 #### 三、构造函数 `Vector`提供了三种构造函数: 1. `public Vector(int initialCapacity, int capacityIncrement)` - **...

    java基本集合类,java基本集合类

    默认初始容量为10,当添加元素超过容量时,ArrayList会自动扩容,扩容策略通常是当前容量的1.5倍。这通过`System.arraycopy()`方法将原数组元素复制到新的更大的数组中完成。为了提高效率,建议在创建ArrayList时...

    java中集合类的区别

    ### Java中集合类的区别 #### 一、ArrayList与Vector **ArrayList** 和 **...例如,对于 **Hashtable**,推荐的初始容量应足够大以减少重新哈希的次数,并且负载因子通常设置为 0.75 左右以平衡性能和内存使用。

    用Java动态数组扩充实现线性表

    当我们创建一个ArrayList时,并不立即分配所有所需的空间,而是先分配一个初始容量,随着元素的增加,当容量不足时,会自动进行扩容操作。 线性表的动态扩充实现主要涉及到以下几个关键点: 1. **初始化**:线性表...

    java api帮助文档

    例如,`java.util.ArrayList`的构造器允许指定初始容量或直接从另一个集合初始化。 3. 方法:每个方法都有一个签名(包括返回类型、方法名和参数列表),以及详细的描述和参数说明。例如,`java.io.File`类的`...

    Java认证考试基础知识辅导Java程序性能优化

    因此,根据预期的元素数量合理设置初始容量是非常重要的: ```java public Vector v = new Vector(20); // 设置初始容量为20 public Hashtable hash = new Hashtable(10); // 设置初始容量为10 ``` 通过这种方式,...

    java 集合

    例如,ArrayList每次扩容为其原容量的1.5倍,这可能会影响性能,因此在预估元素数量时,合理设置初始容量是必要的。 11. 容器类与集合的关系:Java中的容器类,如ArrayList、LinkedList等,都实现了Collection接口...

    JAVA集合介绍

    2. **指定初始容量的构造函数**:创建一个具有指定初始容量的空列表。 ```java public ArrayList(int initialCapacity) { if (initialCapacity ) throw new IllegalArgumentException("Illegal Capacity: " + ...

Global site tag (gtag.js) - Google Analytics