Использование памяти строки [] [] и структуры, содержащей строку [] - PullRequest
0 голосов
/ 15 февраля 2019

При добавлении к профилированию [][]string показано, что приложение использует около 145 МБ памяти.

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)
}

При хранении фрагмента в структуре и добавлении, что приложение использует около 260 МБ памяти.

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)
}

Такое ощущение, что он использует двойную память во втором примере.Может кто-нибудь объяснить, почему во втором примере используется больше памяти?

...