[] []字符串与包含[]字符串的结构的内存使用情况

时间:2019-02-15 12:01:36

标签: go memory struct memory-leaks slice

在附加到[][]string分析时显示该应用使用了大约145MiB的内存。

defer profile.Start(profile.MemProfile).Stop()

f, _ := os.Open("test.csv") // 100 MiB File
r := csv.NewReader(f)

var records [][]string
for {
    values, err := r.Read()
    if err == io.EOF {
        break
    }
    records = append(records, values)
}

将切片存储在结构中并附加应用程序使用大约260MiB的内存时。

defer profile.Start(profile.MemProfile).Stop()

type record struct {
    values []string
}

f, _ := os.Open("test.csv") // 100 MiB File
r := csv.NewReader(f)

var records []record
for {
    values, err := r.Read()
    if err == io.EOF {
        break
    }
    r := record{values: values}
    records = append(records, r)
}

在第二个示例中,感觉好像正在使用两倍的内存。有人可以解释为什么第二个示例使用更多的内存吗?

0 个答案:

没有答案