专栏首页Clive的技术分享Golang垃圾回收gc调优

Golang垃圾回收gc调优

示例代码 test.go
package main

import (
    "fmt"
    "time"
)

func main() {
    a := "123"
    fmt.Println(a)

    B := make(chan int, 8)
    go func() {
        B <- 1
    }()
    go func() {
        fmt.Println(<-B)
    }()

    c := make([]int, 10, 20)
    c = append(c, 1, 2, 3)
    fmt.Println(c)

    time.Sleep(1 * time.Second)
}
命令行调用go程序代码,输出gc信息到日志
GODEBUG=gctrace=1 go run test.go 2> log.file
123
[0 0 0 0 0 0 0 0 0 0 1 2 3]
1

gc 1 @0.030s 0%: 0.036+0.47+0.11 ms clock, 0.14+0.16/0.33/0.91+0.44 ms cpu, 4->4->0 MB, 5 MB goal, 4 P
gc 2 @0.052s 0%: 0.005+0.43+0.077 ms clock, 0.023+0.19/0.30/0.71+0.31 ms cpu, 4->4->0 MB, 5 MB goal, 4 P
gc 3 @0.082s 3%: 1.6+1.2+0.25 ms clock, 6.5+1.5/2.4/0+1.0 ms cpu, 4->4->1 MB, 5 MB goal, 4 P
gc 4 @0.089s 4%: 0.10+0.79+0.087 ms clock, 0.41+0.27/0.73/0.60+0.35 ms cpu, 4->4->1 MB, 5 MB goal, 4 P
gc 5 @0.096s 4%: 0.005+0.50+0.035 ms clock, 0.023+0.055/0.38/0.94+0.14 ms cpu, 4->4->0 MB, 5 MB goal, 4 P
gc 6 @0.102s 4%: 0.005+0.51+0.049 ms clock, 0.022+0.10/0.40/0.93+0.19 ms cpu, 4->4->1 MB, 5 MB goal, 4 P
# command-line-arguments
gc 1 @0.005s 9%: 0.008+3.3+0.071 ms clock, 0.035+0.18/3.0/2.4+0.28 ms cpu, 4->5->3 MB, 5 MB goal, 4 P
# command-line-arguments
gc 1 @0.001s 18%: 0.006+3.7+0.087 ms clock, 0.026+0.16/3.5/0.30+0.35 ms cpu, 4->5->4 MB, 5 MB goal, 4 P
gc 2 @0.012s 11%: 0.006+3.5+0.034 ms clock, 0.026+0.10/3.3/0.94+0.13 ms cpu, 8->9->8 MB, 9 MB goal, 4 P
gc 3 @0.020s 13%: 0.006+6.1+0.056 ms clock, 0.024+0.16/6.0/3.4+0.22 ms cpu, 14->14->14 MB, 16 MB goal, 4 P
gc 4 @0.060s 8%: 0.009+11+0.041 ms clock, 0.038+0.19/11/6.6+0.16 ms cpu, 26->26->24 MB, 28 MB goal, 4 P
golang gc 优化思路以及实例分析

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mongodb基础

    Clive
  • 高并发、高可用系统设计原则

    Clive
  • Git的概念及常用命令概念优势常用命令

    概念 Git是一个分布式的版本控制工具,区别于集中式管理的SVN。 ---- 优势 1、每个开发者都拥有自己的本地版本库,可以在本地任意修改代码、创建分支,不会...

    Clive
  • golang gctrace分析gc过程

    图片原图:https://en.wikipedia.org/wiki/Tracing_garbage_collection#/media/File:Animat...

    用户5705150
  • 再议-Golang语言MessageBox用法实例

    曾几何时,大多数人最先接触电脑的时候,windows是我们第一次的尝试遨游网络世界的媒介;作为IT民工加屌丝的我也是一样。现在从C++转换到GO语言,自己也同样...

    李海彬
  • 【项目实战】自监控-05-弹窗交互

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • 如何 build 出尽可能小的 docker image?

    1. 简介 我们自己构建 Docker image 时都希望结果镜像越小越好,那么如何才能尽量变小呢? 下面我们通过一个简单的案例,了解下优化思路,看一个简单的...

    dys
  • 安装ipython和虚拟环境

    先epel-release这个包, 通过epel源安装pip: yum install python-pip 然后pip install ipython==1...

    零月
  • iOS 单个app最大可以获得多少运行内存

    别人做过的测试,没有实践准不准: https://stackoverflow.com/questions/5887248/ios-app-maximum-me...

    ZY_FlyWay
  • Mac OS安装PostgreSQL数据库

    因项目需要,在本地的Mac上安装PostgreSQL,本文记录一下安装的整个步骤。这里采用EnterpriseDB 来下载安装,EnterpriseDB是全球唯...

    程序新视界

扫码关注云+社区

领取腾讯云代金券