`
xly_971223
  • 浏览: 1277526 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List与数组占用字节数

    博客分类:
  • java
阅读更多
想看一下List序列化后占用多少个 字节,测试程序如下:
	public static void main(String[] args) throws IOException{
		int n = 2000;
		List<Integer> list = new LinkedList<Integer>();
		for (int i = 0; i < n; i++) {
			list.add(i);
		}
		System.out.println("元素数:" + list.size());
		
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ObjectOutputStream os = new ObjectOutputStream(baos);
		
		os.writeObject(list);
		os.close();
		
		
		System.out.println("字节数:" + baos.size());
		baos.close();
	}

输出结果:
元素数:0
字节数:48

元素数:1
字节数:125

元素数:2
字节数:135

元素数:3
字节数:145

元素数:2000
字节数:20115

可以看出超过一个元素后 每增加一个增加10个字节
可简单的理解为每个整形占10字节

==============================
同样的程序改用int[], 整形数组测试结果如下
元素数:0
字节数:27

元素数:1
字节数:31

元素数:2
字节数:35

元素数:3
字节数:39

元素数:2000
字节数:8027

每个元素占4个字节
===========================
可以看出int[]比List<Integer>节省很多的内存
差不多2.5倍吧


用memcached来缓存 的话
用数组是比较合算的,可惜数组不能动态变化
或者可采用字符串的方式,如‘1#2#3#4’这样
1
0
分享到:
评论
1 楼 mercyblitz 2010-07-17  
楼主可以看一下,我写的:
http://mercyblitz.iteye.com/blog/710998

四个字节是引用的对象小大,数组的元素都是引用。

相关推荐

    计算一个Java对象占用字节数的方法

    在Hotspot JVM中,非数组对象的对象头占用8字节,而数组对象则额外增加4字节来存储数组长度信息,总计12字节。 **基本类型域(B)**: 这是对象中包含的基本数据类型字段,如boolean、byte、char、short、int、...

    Java byte数组与其他类型转换

    在Java中,byte数组可以被用来存储short类型的值,因为一个short占用两个字节。`putShort`和`getShort`方法用于在字节数组中写入和读取short值。这两个方法内部都采用了位移操作来完成转换。例如,`putShort`方法...

    数组与广义表相关知识.pptx

    在行主序中,数组按照行优先的原则存储,例如一个m×n的二维数组,其元素a[i][j]的地址可以通过公式LOC(i, j) = LOC(0, 0) + (n×i + j)×L计算得出,其中LOC(0, 0)是数组首元素的地址,L是每个元素占用的字节数。...

    数组与广义表PPT学习教案.pptx

    行优先存储时,第i行第j列的元素地址为`LOC(i, j) = a + (i * m + j) * l`,其中a是数组起始位置,m是每行元素个数,l是每个元素占用的字节数。 数组的概念可以扩展到更高维度,如三维数组和n维数组。三维数组的...

    一文看懂C#中List的扩容机制

    从输出结果中,我们可以看到 List 的数组占用大小为 16777240 字节,共 4194304 个元素。 List 的扩容机制是以 2 的幂次方增长的,这对我们在实际开发中处理大型集合问题提供了重要的参考价值。

    Python数据分析1

    * `nbytes`:数组占用的字节数量,例如 `nbytes` 等于 24 表示一个占用 24 字节的数组 NumPy 数组的操作 NumPy 库提供了多种方法来操作数组,包括: * `reshape` 函数:将数组的形状改变,例如 `reshape(a, (2, 3...

    详解JAVA 字节流和字符流

    示例展示了如何使用字节流来读取文件内容,但是由于中文字符采用GBK编码每个字符占用两个字节,如果字节数组的长度小于2,读取过程中就可能出现乱码。为了避免这个问题,应当确保读取时分配足够大的字节数组,或者...

    LotusScript

    一维数组的声明方式如`Dim myArray(5) as Integer`,表示一个包含6个元素(从0到5)的整数数组。也可以指定数组的上下界,如`Dim myArray(0 to 5) as Integer`。二维数组的声明方式类似,例如`Dim myTwoArray(1 to 5...

    Python当中的array数组对象实例详解

    - `array.itemsize`: 返回数组中每个元素所占的字节数。 示例代码如下: ```python print(array.typecodes) # 输出: bBuhHiIlLqQfd print(arr.typecode) # 输出: i print(arr.itemsize) # 输出: 4 ``` #### 三、...

    Numpy介绍.docx(python数据分析系列02)

    - `ndarray.itemsize`:每个元素占用的字节数。 - `ndarray.data`:包含实际元素的缓冲区,通常我们直接通过索引访问数组元素。 **3. Numpy的优势** - **内存优化**:Numpy数组能连续存储,相比于Python list,存储...

    redis字节码存压缩对象

    压缩则是一种减少数据占用空间的技术,通过算法将数据压缩到更小的字节数组,以节省存储空间。 标题“redis字节码存压缩对象”涉及到的知识点主要包括 Redis 对象的存储方式以及压缩技术在 Redis 中的应用。下面将...

    C语言与Python的数据存储研究.pdf

    `sizeof`运算符可以用于查询特定类型在内存中占用的字节数。 Python,作为一种高级编程语言,其数据存储方式更抽象,它提供了动态类型系统,这意味着变量的类型在运行时确定,而非在编译时。Python的数值类型包括...

    lotus domino 开发资料 数据类型数值范围

    固定数组的每个元素都有与数据类型相应的初始值,最大可达64K字节。 - **List**:列表,一维集合,元素具有相同类型,通过名称而非下标引用。最大可达64K字节。 - **Variant**:变体类型,可以存储任何标量值、...

    数据结构与算法:ch00_C语言复习.ppt

    4. **sizeof运算符**:`sizeof`运算符用于计算类型或变量所占用的内存字节数。例如,`sizeof(int)`通常返回2(假设这里是16位环境),`sizeof(char)`为1,`sizeof(double)`为8,`sizeof(float)`为4。对于包含多个...

    python的numpy库手册官方文档

    这一对象让Numpy能够处理整数、浮点数、复数、字符串、布尔值等数据类型,并能定义数组中每个元素占用的字节数、数据存储的字节序(big-endian或little-endian)等。这一特性使得Numpy在存储大型数据结构时能够更加...

    python数据可视化知识点(numpy,pandas,matplotlib)

    - `itemsize`:返回每个元素占用的字节数。 - `data`:返回数组元素的内存缓冲区。 2. **创建数组**: - `np.array(range(n))`:创建从0到n-1的一维数组,元素类型由n决定。 - `np.arange(n)`:类似`np.array...

    NumPy 使用手记

    - `nbytes`:数组所占用的总字节数。 - `real`:实部。 - `imag`:虚部。 - `flat`:将数组转换为一维可迭代的对象。 - `T`:矩阵的转置。 3. **数组方法** - `tolist()`:将数组转换为 Python 列表。 - `...

    c++选择题(指针部分,含答案)1

    7. 假设`double list[] = {1, 3.4, 5.5, 3.5}`从地址04BFA810开始存储,一个`double`值占用8字节,那么`&list[1]`是第二个元素的地址,即04BFA818(04BFA810+8),选项B正确。 8. `&list[1]`是数组`list`的第二个...

Global site tag (gtag.js) - Google Analytics