The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
peanuts7660

请教个 gin 的问题。

  •  
  •   peanuts7660 · Jun 6, 2019 · 3821 views
    This topic created in 2709 days ago, the information mentioned may be changed or developed.
    我用 gin 写了一个 web,实现的功能是从另一个网站的的接口中获取一个 json ,然后将 json 处理过滤后返回。
    这个 json 结构非常复杂,在解析的过程中,我使用了很多次的 make(map[string]interface{}) 来解析。
    我打好包刚运行时内存占用 2M 左右,第一次访问后内存涨到 4M,第二次访问涨到 5M,然后以后 一千次 访问内存会涨到 9M 左右,接着我又访问了十万次,内存涨到了 10.6M 就不动了 。
    请问下为什么会出现如此怪异的内存波动?是不是存在内存泄漏?
    第一次写 go 的项目,还请大家多多指教。
    8 replies  •  2019-06-06 19:36:18 +08:00
    hellowang
    hellowang
    Jun 6, 2019
    1
    看你头像进来的
    Yoock
    Yoock
    Jun 6, 2019
    2
    golang pprof 看一下堆栈
    pursuer
    pursuer
    Jun 6, 2019
    3
    内存回收不是用完就立即回收的
    EthanDon
    EthanDon
    Jun 6, 2019
    4
    json 解析还需要手动吗,gin 的话不是直接 bindjson 就完了吗。。。
    bagel
    bagel
    Jun 6, 2019
    5
    头几次一直涨因为还没触发 GC 吧。十万次稳定在 10M,说明没有内存泄露,GC 很稳。Go 真是独立开发者福音,小服务器上跑全套足够用。对比 Java,10M 连 JVM 都起不起来。
    memorycancel
    memorycancel
    Jun 6, 2019 via iPhone
    6
    不要自己用 struct 解析 json ,用三方库,我以前用的 gjson 这个,还行吧,凑活用
    reus
    reus
    Jun 6, 2019
    7
    用 struct 是最方便的,不知道为啥一定要用 map[string]interface{},不嫌 type assertion 麻烦?

    另外这个内存占用没有任何怪异之处
    aliipay
    aliipay
    Jun 6, 2019
    8
    map[string]interface{} 应该是最糟糕的地方,struct 和 gjson 都还不错,可以看具体情况选择
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2523 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 14:42 · PVG 22:42 · LAX 06:42 · JFK 09:42
    ♥ Do have faith in what you're doing.