我有一個大的.json文件,大約有2MB。我使用this code閱讀JSON,用少許修改:爲什麼我的Go程序使用打開文件的名稱創建另一個Go進程,以及它爲什麼如此之大?
func main() {
pages := getPages()
for {
}
for _, p := range pages {
fmt.Println(p.toString())
}
正如你所看到的,我已經把一個無限循環,所以我可以使程序等待,而我讀的過程中的RAM大小。當我讀完它時,我發現有2個程序正在運行。我只是做了
go run myfile.go
但後來我得到了2個二進制文件:一個名爲go
,和其他與不json的部分文件名。 go
二進制文件有5mb,但是這個文件有36mb ...
爲什麼go會使用文件的名稱創建另一個進程?它是在哪裏持有的文件,所以我可以讀?它爲什麼這樣做?據我所知,文件閱讀應由操作系統提交。爲什麼它與.json大小相比如此之大?
此外,不應該,當getPages()
返回時,由於去垃圾收集器,文件對象和json對象都從內存中刪除?
沒有睡眠的無限循環或任何是一個壞主意,它會消耗大量的CPU。該文件是否由URL指向您正在使用的確切代碼? –
除非您回覆 –
的評論,否則很難幫到您,但後來我得到了2個二進制文件:一個名爲go,另一個文件的名稱不帶json部分。 go二進制文件有5mb,但是這個文件有36mb ... 'go run'不會在工作目錄中創建二進制文件 –