你好~我是一名开发人员,想为我们公司学习和修改 IoTDB 代码。当我看到 IoTDB 的 TVList 的代码时。我很好奇为什么 IoTDB 使用数组的数组而不是 TVList 中的 List。使用数组的数组,排序方法和删除方法会变得复杂并且可能包含错误。列表结构易于排序、追加和删除,并已被大量用户验证。为什么不使用 List 来替换 TVList 中的数组的数组。
1 回答
0
您好~我是 IoTDB 的贡献者,很高兴您对 IoTDB 感兴趣并加入 IoTDB 的开发社区。
对于您的问题,让我们以 32 位整数为例。在使用 List 结构时,我们必须在 java 中将 int 装箱为 Integer。一个 int 占用 4 个字节的内存,而一个 Integer 占用 16 个字节的内存(8 个字节的标记字、4 个字节的引用和 4 个字节的 int 数据)。TVlist 存储 IoTDB 的摄取数据,因此它对内存至关重要。与使用 Integer 相比,使用 int 将节省 3/4 内存。
简而言之,我们使用数组的数组来节省内存。
于 2021-12-01T06:57:17.417 回答