У меня есть большой файл .json, который имеет около 2 Мб. Я использую this code читать JSON, с небольшим изменением:Почему моя программа Go создает другой процесс Go с именем открытого файла и почему он такой большой?
func main() {
pages := getPages()
for {
}
for _, p := range pages {
fmt.Println(p.toString())
}
Как вы можете видеть, я поместил в бесконечный цикл, так что я мог бы сделать программу ждать, пока я прочитал размер оперативной памяти процесса. Когда я прочитал его, я обнаружил, что работает 2 go программы. Я просто сделал
go run myfile.go
, но потом я получил 2 двоичных файлов: один по имени go
, а другой с именем файла без JSon части. Бинарный файл go
имеет 5 Мбайт, но у этого есть 36mb ...
Почему go создает другой процесс с именем файла? Это где он держит файл, чтобы я мог читать? Почему это так? Насколько мне известно, чтение файла должно быть передано ОС. И почему он настолько велик по сравнению с размером .json?
Кроме того, не должно, когда getPages()
вернуть, как объект файла, так и объект json будут удалены из памяти из-за сборщика мусора go?
Бесконечная петля без сна или любая плохая идея, она потребляет много CPU. Является ли файл указан URL-адресом точного кода, который вы используете? –
Было бы сложно помочь вам, если вы не ответите на комментарии –
, но затем я получил 2 бинарных файла: один по имени go, а другой с именем файла без части json. У двоичного файла go есть 5mb, но у этого есть 36mb ... 'go run' не создает двоичные файлы в рабочем каталоге –