Как сбросить $ GODEBUG - PullRequest
1 голос
/ 02 мая 2019

Я использовал gcvis инструмент Дейва Чейни для устранения утечки памяти.Все прошло хорошо, проблема решена.

Однако я понятия не имею, как, но я не могу на всю жизнь остановить вывод сборщика мусора из-за затопления моих журналов, что делает разработку очень трудной.

В соответствии с руководством runtime -пакета :

Установка gctrace на любое значение> 0 также приводит к тому, что сборщик мусора выдает сводку при освобождении памяти обратно в систему.

Это, однако, не имеет никакого эффекта.

Как удалить вывод?


Я пробовал следующее:

Экспорт в пустое значение

$ export GODEBUG=
$ go run main.go

Сброс

$ unset GODEBUG
$ go run main.go

Установка в ноль (такжепробовал без кавычек, только для завершения)

$ export GODEBUG="gctrace=0"
$ go run main.go

В любом случае, я получаю этот вывод каждый раз (имена пакетов отредактированы):

# my-package-0
gc 1 @0.006s 10%: 0.025+3.4+0.11 ms clock, 0.20+1.7/5.9/1.7+0.94 ms cpu, 4->4->3 MB, 5 MB goal, 8 P
gc 2 @0.019s 7%: 0.005+1.0+0.086 ms clock, 0.047+0.67/1.8/2.8+0.69 ms cpu, 5->5->4 MB, 6 MB goal, 8 P
gc 3 @0.030s 6%: 0.006+2.8+0.091 ms clock, 0.053+0.10/4.8/4.2+0.73 ms cpu, 7->8->6 MB, 8 MB goal, 8 P
gc 4 @0.050s 6%: 0.030+4.2+0.096 ms clock, 0.24+1.0/7.3/3.7+0.76 ms cpu, 13->14->8 MB, 14 MB goal, 8 P
# my-package-1
gc 1 @0.007s 5%: 0.010+2.6+0.15 ms clock, 0.086+0.19/3.4/2.6+1.2 ms cpu, 4->4->2 MB, 5 MB goal, 8 P
gc 2 @0.015s 6%: 0.007+2.5+0.11 ms clock, 0.060+0.63/3.4/2.4+0.91 ms cpu, 5->5->4 MB, 6 MB goal, 8 P
gc 3 @0.028s 6%: 0.010+3.0+0.53 ms clock, 0.084+0.23/2.7/2.4+4.2 ms cpu, 8->9->5 MB, 9 MB goal, 8 P
# my-package-3
gc 1 @0.009s 15%: 0.012+4.5+1.7 ms clock, 0.10+0.62/4.5/0.77+13 ms cpu, 4->4->2 MB, 5 MB goal, 8 P
gc 2 @0.030s 9%: 0.006+2.8+0.10 ms clock, 0.050+0.63/3.7/2.9+0.85 ms cpu, 5->5->4 MB, 6 MB goal, 8 P
gc 3 @0.043s 11%: 0.53+3.9+0.084 ms clock, 4.3+7.0/7.8/5.2+0.67 ms cpu, 9->10->7 MB, 10 MB goal, 8 P
gc 4 @0.062s 10%: 0.027+3.6+0.12 ms clock, 0.21+5.2/6.3/5.0+1.0 ms cpu, 12->13->8 MB, 14 MB goal, 8 P
# my-package-4
[...]

Вкл.запрос в комментариях, вот вывод от $ go env:

GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/dimholt/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/dimholt/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/fx/p9gpbcnd5_jdgqyp6z1w9tqr0000gn/T/go-build333219542=/tmp/go-build -gno-record-gcc-switches -fno-common"

и мой main.go:

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/redacted/config"
    "github.com/redacted/db"
)

func main() {
    conf := config.GetConfig()

    // Connect database.
    db.Connect()
    defer db.Close()

    // Register all HTTP routes.
    registerRoutes()

    port := fmt.Sprintf(":%v", conf.Port)
    log.Printf("documents: listening on port %v", port[1:])
    log.Fatal(http.ListenAndServe(port, nil))
}

1 Ответ

1 голос
/ 03 мая 2019

Что-то еще не так.

Запуск GODEBUG= go run main.go обязательно должен запустить ваш main.go без GODEBUG.Не стесняйтесь набирать os.Getenv в начале main.go, чтобы проверить GODEBUG - он должен быть выключен.

Можете ли вы минимизировать main.go и показать его?Вы могли бы установить флаги отладки как-нибудь из кода.

Попробуйте запустить go env и посмотрите, что установлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...