通过pprof看到某个方法占用内存过大,大神们如何修改代码让内存占用更少?

chirst · 2023-05-23 10:26:03 · 2133 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2023-05-23 10:26:03 的主题,其中的信息可能已经有所发展或是发生改变。

pprof占用内存代码如下: QQ截图20230523102526.png 代码 func FirewallRulesGet() ([]FWRule, error) { rules := make([]FWRule, 1000)

u, fwPolicy, err := firewallAPIInit()
if err != nil {
    return rules, err
}
defer firewallAPIRelease(u, fwPolicy)

ur, ep, enum, err := firewallRulesEnum(fwPolicy)
if err != nil {
    return rules, err
}
defer firewallRulesEnumRealease(ur, ep)

for itemRaw, length, err := enum.Next(1); length > 0; itemRaw, length, err = enum.Next(1) {
    if err != nil {
        return rules, fmt.Errorf("failed to seek next Rule item: %s", err)
    }

    rule, err := firewallRuleParams(itemRaw)
    if err != nil {
        return rules, err
    }
    rules = append(rules, rule)
}

return rules, nil

}


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2133 次点击  
加入收藏 微博
3 回复  |  直到 2023-05-23 22:38:14
GGXXLL
GGXXLL · #1 · 2年之前

你先更新一下这个库的版本看看。你图里发的 rules := make([]FWRule,1000) 这里不对吧,下面用的是 append。新版本现在是 rules := make([]FWRule, 0, 1024)。你现在这个版本应该有问题,这个 issue 修复了 Memory leak while using firewall.go

chirst
chirst · #2 · 2年之前

@GGXXLL 非常感谢啊,已更新观察中

Scout114
Scout114 · #3 · 2年之前

使用代理还不能访问chatgpt的看过来 用这个: https://chaintz.top 或者这个: https://store.chaintz.app/ 或者这个:https://www.chainuk.top/

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传