想看一下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’这样
分享到:
相关推荐
在Hotspot JVM中,非数组对象的对象头占用8字节,而数组对象则额外增加4字节来存储数组长度信息,总计12字节。 **基本类型域(B)**: 这是对象中包含的基本数据类型字段,如boolean、byte、char、short、int、...
在Java中,byte数组可以被用来存储short类型的值,因为一个short占用两个字节。`putShort`和`getShort`方法用于在字节数组中写入和读取short值。这两个方法内部都采用了位移操作来完成转换。例如,`putShort`方法...
在行主序中,数组按照行优先的原则存储,例如一个m×n的二维数组,其元素a[i][j]的地址可以通过公式LOC(i, j) = LOC(0, 0) + (n×i + j)×L计算得出,其中LOC(0, 0)是数组首元素的地址,L是每个元素占用的字节数。...
行优先存储时,第i行第j列的元素地址为`LOC(i, j) = a + (i * m + j) * l`,其中a是数组起始位置,m是每行元素个数,l是每个元素占用的字节数。 数组的概念可以扩展到更高维度,如三维数组和n维数组。三维数组的...
从输出结果中,我们可以看到 List 的数组占用大小为 16777240 字节,共 4194304 个元素。 List 的扩容机制是以 2 的幂次方增长的,这对我们在实际开发中处理大型集合问题提供了重要的参考价值。
* `nbytes`:数组占用的字节数量,例如 `nbytes` 等于 24 表示一个占用 24 字节的数组 NumPy 数组的操作 NumPy 库提供了多种方法来操作数组,包括: * `reshape` 函数:将数组的形状改变,例如 `reshape(a, (2, 3...
示例展示了如何使用字节流来读取文件内容,但是由于中文字符采用GBK编码每个字符占用两个字节,如果字节数组的长度小于2,读取过程中就可能出现乱码。为了避免这个问题,应当确保读取时分配足够大的字节数组,或者...
一维数组的声明方式如`Dim myArray(5) as Integer`,表示一个包含6个元素(从0到5)的整数数组。也可以指定数组的上下界,如`Dim myArray(0 to 5) as Integer`。二维数组的声明方式类似,例如`Dim myTwoArray(1 to 5...
- `array.itemsize`: 返回数组中每个元素所占的字节数。 示例代码如下: ```python print(array.typecodes) # 输出: bBuhHiIlLqQfd print(arr.typecode) # 输出: i print(arr.itemsize) # 输出: 4 ``` #### 三、...
- `ndarray.itemsize`:每个元素占用的字节数。 - `ndarray.data`:包含实际元素的缓冲区,通常我们直接通过索引访问数组元素。 **3. Numpy的优势** - **内存优化**:Numpy数组能连续存储,相比于Python list,存储...
压缩则是一种减少数据占用空间的技术,通过算法将数据压缩到更小的字节数组,以节省存储空间。 标题“redis字节码存压缩对象”涉及到的知识点主要包括 Redis 对象的存储方式以及压缩技术在 Redis 中的应用。下面将...
`sizeof`运算符可以用于查询特定类型在内存中占用的字节数。 Python,作为一种高级编程语言,其数据存储方式更抽象,它提供了动态类型系统,这意味着变量的类型在运行时确定,而非在编译时。Python的数值类型包括...
固定数组的每个元素都有与数据类型相应的初始值,最大可达64K字节。 - **List**:列表,一维集合,元素具有相同类型,通过名称而非下标引用。最大可达64K字节。 - **Variant**:变体类型,可以存储任何标量值、...
4. **sizeof运算符**:`sizeof`运算符用于计算类型或变量所占用的内存字节数。例如,`sizeof(int)`通常返回2(假设这里是16位环境),`sizeof(char)`为1,`sizeof(double)`为8,`sizeof(float)`为4。对于包含多个...
这一对象让Numpy能够处理整数、浮点数、复数、字符串、布尔值等数据类型,并能定义数组中每个元素占用的字节数、数据存储的字节序(big-endian或little-endian)等。这一特性使得Numpy在存储大型数据结构时能够更加...
- `itemsize`:返回每个元素占用的字节数。 - `data`:返回数组元素的内存缓冲区。 2. **创建数组**: - `np.array(range(n))`:创建从0到n-1的一维数组,元素类型由n决定。 - `np.arange(n)`:类似`np.array...
- `nbytes`:数组所占用的总字节数。 - `real`:实部。 - `imag`:虚部。 - `flat`:将数组转换为一维可迭代的对象。 - `T`:矩阵的转置。 3. **数组方法** - `tolist()`:将数组转换为 Python 列表。 - `...
7. 假设`double list[] = {1, 3.4, 5.5, 3.5}`从地址04BFA810开始存储,一个`double`值占用8字节,那么`&list[1]`是第二个元素的地址,即04BFA818(04BFA810+8),选项B正确。 8. `&list[1]`是数组`list`的第二个...