func (p *BestBidOfferWebSocketClient) handleMessage(msg string) (
interface{}, error) {
result := market.SubscribeBestBidOfferResponse{}
err := json.Unmarshal([]byte(msg), &result)
return result, err
}
Вопрос по куче. Есть во такой вот метод. Тут создаётся структура market.SubscribeBestBidOfferResponse
в стеке. Далее она по ссылке передаётся в json.Unmarshal
.
По идея, тут нигде нет утечки в кучу. Или есть при передачи в анмаршал?
Но тут ещё одна загвоздка. Возвращаемый параметр interface{}. При передачи result
как структуры в стеке туда не случается ли утечка в кучу из-за особенности interface{}?
Этот участок кода в одной из библиотек обрабатывает очень высоконагруженное место в веб-соккетах.
И профилировщик показывает тут одно из самых крупных “засерателей” кучи, хотя по сути цель метода конвертировать данных из соккетов в структуру пакета и отдать выше на обработку.
Класть данные от этого огромного потока в кучу нет никакого смысла, но почему-то это происходит тут.