Comments 13
В самом начале вместо 12го слайда затесался 18й
Например, если у вас лаптоп на Linux 64 bit, то у вас арена будет весить 64Mb.
Получается простой «Hello World» может есть минимум 64 Мб
Если происходит аллокация, а судя по этому
Значение передается в аргумент типа interface{} — аргумент fmt.Println;
Она происходит
Да, но не забывайте, что это виртуальная память, а не физическая :)
Но тем не менее эти 64 Мб они же транслируются в физическую память
пусть даже и в swap
… если я не ошибаюсь
То есть при первом создании переменной определенного размера пул выделит 8кб (и больше в зависимости от класса)?
Спасибо за статью, пара вопросов:
Переменная i2 ушла в хип. Почему так и на что это может повлиять ?
Потому что не влезла в стек?
Значение передается в аргумент типа interface{} — аргумент fmt.Println;
А с дженериками как дела обстоят?
Спасибо за статью
Вам спасибо, что прочитали :)
А с дженериками как дела обстоят?
Если я не ошибаюсь, судя по этому milestone , уходом в heap у дженериков хотят занятся в версии go 1.20
Потому что не влезла в стек
Не совсем, все дело в "indirection assignment". Я думаю вам проще будет загуглить и почитать, как часто его совершают и почитать почему компилятор себя так ведет. Что по поводу размера переменных, можно посмотреть вот здесь
Не совсем, все дело в "indirection assignment"
Ну так нечестно, написать про 3 случая когда уходим в heap, и не рассказать про четвёртый :)
Нашёл разбор примера из статьи, кому ещё будет интересно:
https://www.ardanlabs.com/blog/2018/01/escape-analysis-flaws.html
Go To Memory