Size: a a a

2021 February 11

I

IdiocyAcceptance in pro.net
Задиспоузил 1 раз и пошёл нахуй
источник

IC

Ilya Chernoudov in pro.net
Anatoly
можешь, регулярно.
расскажи! похоже на интересную историю или багу в ГЦ
источник

A

Anatoly in pro.net
ну, хотя, может ты гоняешь всё на одноядерной тачке - тогда не можешь, безусловно.
источник

I

IdiocyAcceptance in pro.net
Anatoly
можешь, регулярно.
Я тоже не понял)
источник

A

Anatoly in pro.net
Ilya Chernoudov
расскажи! похоже на интересную историю или багу в ГЦ
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
источник

SB

S B in pro.net
Ilya Chernoudov
ты считаешь, что весь код надо писать thread safe?
Да, я считаю, что в 21 веке многопоточный код это основа и в общем-то нужно стараться проектировать с расчётом на это.
источник

SB

S B in pro.net
А если ты отказываешься от этого, то это должен быть сознательный выбор.
источник

A

Anatoly in pro.net
а раз можно собрать, то можно положить в файналайзер кью и вызвать этот самый файналайзер
источник

SB

S B in pro.net
Хорошо продиктованный чем-либо, кроме твоей лени.
источник

IC

Ilya Chernoudov in pro.net
S B
Да, я считаю, что в 21 веке многопоточный код это основа и в общем-то нужно стараться проектировать с расчётом на это.
усё понятно, следующий
источник

I

IdiocyAcceptance in pro.net
Anatoly
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
Часто на такое попадал? В частности, второй вариант
источник

I

IdiocyAcceptance in pro.net
Чёт навскидку кажется что out of this world ситуация
источник

IC

Ilya Chernoudov in pro.net
Anatoly
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
интересный кейс, ты уверен что всё именно так?
источник

IC

Ilya Chernoudov in pro.net
Anatoly
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
если диспоз уже вызван и вы в нём не работаете с полями объекта при вызове метода всегда передаётся ссылка this, она будет в стеке и гц не должен собрать. к тому же финализатор значительно расширяет время жизни объекта
источник

IC

Ilya Chernoudov in pro.net
Anatoly
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
на счёт прибития апы - там даже финализаторы могут не вызваться
источник

IC

Ilya Chernoudov in pro.net
но кейс интересный
источник

SB

S B in pro.net
Anatoly
очень просто, запустился Dispose(), выполняется, пользователь/оркестратор прибил аппу и финалайзер срочно-решительно побежал по финалайзер queue.

более того, если диспоз уже вызван и вы в нём не работаете с полями объекта, он может не считаться рутом для ГЦ и его можно собрать
Та это как-то сложно. Любые два таска условных конкурируют за ресурс и диспоузят его «кто первый». Если диспоз не идемпотентный...
источник

IC

Ilya Chernoudov in pro.net
@EgorBo ты там уже ГЦ ковырял?
источник

A

Anatoly in pro.net
IdiocyAcceptance
Чёт навскидку кажется что out of this world ситуация
нет, потому что считается хорошим тоном скопировать поля в локальные переменные и работать уже с ними.
источник

A

Anatoly in pro.net
Ilya Chernoudov
если диспоз уже вызван и вы в нём не работаете с полями объекта при вызове метода всегда передаётся ссылка this, она будет в стеке и гц не должен собрать. к тому же финализатор значительно расширяет время жизни объекта
this на стеке и гц не должен собрать - большое заблуждение. Куча демок, когда объект уже собран, хотя метод ещё выполняется.
источник