Size: a a a

2020 April 24

OK

Oleg Kovalov in Go-go!
там все в слайсах хранится, соотв нужно маршалить данные, это далеко не всегда правильное решение
источник

OK

Oleg Kovalov in Go-go!
Vadim Inshakov
а вы знали про проблемы с GC и мапами?
вот ишьи: https://github.com/golang/go/issues/16070
https://github.com/golang/go/issues/20135

только я не понял, в чем причина. у меня есть большая мапа, которая утекает (нет, не говнокод, мапа используется в простой библиотечке go-cache, создатель ссылается на эти же ишьи), но может кто-нибудь сказать, в чем дело?
Maps that shrink and grow repeatedly used to also cause leaks.

в смысле? если часто удалять/добавлять в мапу, она утекает?
выделенный комент про grow repeatedly за 2017й год, что довольно давно было.

основная проблема в этом ишью, что после удаления данных из мепа - память не освобождается.

Сделать 1М ключей и удалить 1М ключей, а памяти будет занято столько, если бы 1М еще там присутствовал.
источник

OK

Oleg Kovalov in Go-go!
некоторые просто пересоздают мапу в таких случаях (просто цикл по ключам со вставкой в новую (при этом заранее выделим сколько надо места), а старую потом удалим)
источник

OK

Oleg Kovalov in Go-go!
либо просто забивают, если мапа мало живёт или не меняется в размере
источник

@

@mr_tron in Go-go!
а кто-нибудь пользовался runtime.SetFinalyzer ? на сколько вообще удобный и адекватный инструмент? или лучше забыть и не трогать?
источник

OK

Oleg Kovalov in Go-go!
@mr_tron
а кто-нибудь пользовался runtime.SetFinalyzer ? на сколько вообще удобный и адекватный инструмент? или лучше забыть и не трогать?
давай так - зачем тебе понадобился финалайзер в го :)
источник

@

@mr_tron in Go-go!
ну если кратко то у меня в тестах плодятся горутины. много тестов много горутин.
горутина связана с неким объектом a который является полем объекта b.
хотелось бы сделать так чтобы при потери ссылки на объект b горутина связанная с объектом a завершалась.
причем в боевом коде мне этого не надо. только в тестах
источник

OK

Oleg Kovalov in Go-go!
@mr_tron
ну если кратко то у меня в тестах плодятся горутины. много тестов много горутин.
горутина связана с неким объектом a который является полем объекта b.
хотелось бы сделать так чтобы при потери ссылки на объект b горутина связанная с объектом a завершалась.
причем в боевом коде мне этого не надо. только в тестах
как вариант - дергать ГЦ одной строкой (defer runtime.GC) в конце теста
источник

OK

Oleg Kovalov in Go-go!
но да, можно накрутить финалайзеры, имх, я бы не парился на такое)
источник

@

@mr_tron in Go-go!
а гц не будет гасить горутину
источник

C

Calculon in Go-go!
блин а нельзя по человечески горутины завершать
источник

@

@mr_tron in Go-go!
с чего вдруг
источник

C

Calculon in Go-go!
типо контекст там прокидывать хз
источник

@

@mr_tron in Go-go!
я думал в объект а добавить флажок и проставлять его в финалайзере. а в горутине чекать этот флажок и завершаться
источник

AS

Andrei 🦉 Sergeev in Go-go!
@mr_tron
я думал в объект а добавить флажок и проставлять его в финалайзере. а в горутине чекать этот флажок и завершаться
реально, гораздо проще будет чекать контекст
источник

C

Calculon in Go-go!
@mr_tron
я думал в объект а добавить флажок и проставлять его в финалайзере. а в горутине чекать этот флажок и завершаться
выглядит нормально
источник

OK

Oleg Kovalov in Go-go!
Calculon
блин а нельзя по человечески горутины завершать
а что там заверщать? - сделал return и конец
источник

C

Calculon in Go-go!
Oleg Kovalov
а что там заверщать? - сделал return и конец
Без циркоплясок с финалайзерами
источник

OK

Oleg Kovalov in Go-go!
в любом случаи она должны завершиться, по окончанию теста, инача странные тесты
источник

АП

Александр Попов... in Go-go!
может у него бесконечные гоурутины?
источник