小编Anu*_*Anu的帖子

golang中encoding/gob和encoding/json之间的区别

我正在GO中编写一个应用程序,它使用encoding/gob在节点之间通过UDP发送结构和切片.它工作正常,但我注意到encoding/json也有类似的API.搜索并找到此信息(https://golang.org/pkg/encoding/):

gob Package gob管理gobs流 - 在编码器(发送器)和解码器(接收器)之间交换的二进制值.
json包json实现了RFC 4627中定义的JSON编码和解码.

有人可以向我解释一个人是否比另一个人更有效率,并且一般比较何时选择什么?另外如果我需要与非golang应用程序接口,我想json会更受欢迎?

encoding json go gob

9
推荐指数
2
解决办法
3215
查看次数

“使用的内存”指标:工具pprof与docker统计信息

我编写了在每个Docker容器中运行的golang应用程序。它通过tcp和udp使用protobufs相互通信,我使用Hashicorp的memberlist库来发现网络中的每个容器。在docker stats上,我看到内存使用量呈线性增加,因此我试图查找应用程序中的任何泄漏。

由于它是一个可以继续运行的应用程序,因此请使用http pprof来检查任何一个容器中的实时应用程序。我看到即使docker stats线性增加,runtime.MemStats.sys也保持不变。我的--inuse_space约为1MB,当然--alloc_space随时间不断增加。这是alloc_space的示例:

root@n3:/app# go tool pprof --alloc_space main http://localhost:8080/debug/pprof/heap                                                                                                                       
Fetching profile from http://localhost:8080/debug/pprof/heap
Saved profile in /root/pprof/pprof.main.localhost:8080.alloc_objects.alloc_space.005.pb.gz
Entering interactive mode (type "help" for commands)
(pprof) top --cum
1024.11kB of 10298.19kB total ( 9.94%)
Dropped 8 nodes (cum <= 51.49kB)
Showing top 10 nodes out of 34 (cum >= 1536.07kB)
      flat  flat%   sum%        cum   cum%
         0     0%     0% 10298.19kB   100%  runtime.goexit
         0     0%     0%  6144.48kB 59.67%  main.Listener
         0     0%     0%  3072.20kB 29.83%  github.com/golang/protobuf/proto.Unmarshal
  512.10kB  4.97%  4.97%  3072.20kB 29.83% …
Run Code Online (Sandbox Code Playgroud)

memory-leaks go pprof docker

3
推荐指数
1
解决办法
2166
查看次数

标签 统计

go ×2

docker ×1

encoding ×1

gob ×1

json ×1

memory-leaks ×1

pprof ×1