golang grp c transport.newBufWriter и bufio.NewReaderSize не освобождает память - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть простой сервер GRP c в golang, который выполняет операции CRUD над объектом. Тем не менее, когда я запускаю его, память никогда не падает, даже после остановки запросов. pprof of heap show имеет следующий результат:

> flat  flat%   sum%        cum   cum%
>   932.39MB 62.45% 62.45%   932.39MB 62.45%  google.golang.org/grpc/internal/transport.newBufWriter
>   463.13MB 31.02% 93.46%   463.13MB 31.02%  bufio.NewReaderSize
>    13.50MB   0.9% 94.37%    13.50MB   0.9%  runtime.malg
>       13MB  0.87% 95.24%  1420.52MB 95.14%  google.golang.org/grpc/internal/transport.newHTTP2Server
>       11MB  0.74% 95.98%    12.10MB  0.81%  time.NewTimer
>     8.50MB  0.57% 96.54%     8.50MB  0.57%  golang.org/x/net/http2/hpack.(*headerFieldTable).addEntry
>     5.50MB  0.37% 96.91%    17.60MB  1.18%  google.golang.org/grpc/internal/transport.(*http2Server).keepalive
>     3.50MB  0.23% 97.15%     7.50MB   0.5%  google.golang.org/grpc/internal/transport.newLoopyWriter
>     1.50MB   0.1% 97.25%    12.50MB  0.84%  google.golang.org/grpc.(*Server).serveStreams
>          0     0% 97.25%       10MB  0.67%  golang.org/x/net/http2.(*Framer).ReadFrame

Может кто-нибудь подсказать мне, как go решить эту проблему с памятью? Сервер работает с параметрами по умолчанию, и я даже включил функцию debug.FreeOSMemory () для освобождения памяти.

...