如何减少[]字符串的内存使用量?

rWick:

Go对我来说很新,我在理解内存使用方面有些麻烦:

我想将类似于csv的文件加载到一个行数组中,每一行都是一个结构,该结构由22个char上的键和一个值数组(字符串)组成。
我的代码如下所示:https : //play.golang.org/p/hJ4SHjVXaG

问题是,对于450M的文件,它将使用大约2G1的内存。
有没有人有减少内存使用量的解决方案?

使用SirDarius解决方案进行更新:https : //play.golang.org/p/DBmOFOkZdx仍在1G9左右使用

尼克·克雷格·伍德(Nick Craig-Wood):

文件中有多少行和字段?

您所描述的是使用最少的内存量,这似乎是合理的。

查看代码,我认为它将为底层字符串数据使用450MB的内存。

然后它将切成字符串。它们由一个指针和一个在64位平台上占用16个字节的长度组成。

因此1.5GB / 16 = 9300万。

因此,如果文件中的字段超过5000万,则内存使用似乎合理。

还有其他开销,例如行数等,因此这不是一个精确的计算。

编辑

给定
500万行,每个10列

这是5000万个16字节的字符串标题,将占用800MB。再加上数据本身450MB,再加上5 * 8 * 5百万行= 200MB,则为1.45GB

因此,我认为即使分配了完美的内存,也无法将使用量减少到1.5GB以下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章