我有一个大的.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'不会在工作目录中创建二进制文件 –