93デフォルトの名無しさん [sage]
94デフォルトの名無しさん [sage]
95デフォルトの名無しさん [sage]
96デフォルトの名無しさん [sage]
97デフォルトの名無しさん [sage]
98デフォルトの名無しさん [sage]
99デフォルトの名無しさん [sage]
100デフォルトの名無しさん [sage]
101デフォルトの名無しさん [sage]
102デフォルトの名無しさん [sage]
設計次第じゃないの
2017/10/18(水)15:17:21.27(8oWZ+6kpM.net)
94デフォルトの名無しさん [sage]
購読側じゃなく発行側が勝手に解除ってのがちょっと...
むしろどういう場面で必要になるのか想像できないな
> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない
まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる
むしろどういう場面で必要になるのか想像できないな
> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない
まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる
2017/10/18(水)15:34:04.84(jnsT8t6ma.net)
95デフォルトの名無しさん [sage]
2017/10/18(水)15:50:00.66(h6dEijxza.net)
96デフォルトの名無しさん [sage]
>>94
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから
2017/10/18(水)16:11:03.50(ufsScDVj0.net)
97デフォルトの名無しさん [sage]
>>96
俺の理解不足だったらごめん
リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが
俺の理解不足だったらごめん
リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが
2017/10/18(水)16:24:45.96(jnsT8t6ma.net)
98デフォルトの名無しさん [sage]
>>97
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる
2017/10/18(水)16:39:10.41(ufsScDVj0.net)
99デフォルトの名無しさん [sage]
思い込みって怖いネー
2017/10/18(水)17:26:02.20(jNhOnQNR0.net)
100デフォルトの名無しさん [sage]
>>98
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね
2017/10/18(水)17:46:05.16(GswCLlj60.net)
101デフォルトの名無しさん [sage]
循環参照しててもルートから到達不能なら回収されるよ
されないなら単に循環参照以外の参照が何かしら残ってるだけ
いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように
されないなら単に循環参照以外の参照が何かしら残ってるだけ
いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように
2017/10/18(水)19:19:26.31(j/PgXgnk0.net)
102デフォルトの名無しさん [sage]
>>101
すまんすまん、他の言語と勘違いしてた。
すまんすまん、他の言語と勘違いしてた。
2017/10/18(水)21:18:06.23(GswCLlj60.net)