[過去ログ] GCは失敗。メモリは自分で管理せよ! その2©2ch.net (720レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
212: デフォルトの名無しさん [] 2015/12/06(日) 19:24:21.60 ID:XJADMoL5(1/2) AAS
GCというよりライブラリとの関係だな
.net framework libraryのいくつかのクラスは中で自分自身をロックするから
プログラマ側で参照が切れてもGCされない
230(1): デフォルトの名無しさん [] 2015/12/07(月) 17:29:26.60 ID:nEG5/lEo(2/4) AAS
>>229229(1): デフォルトの名無しさん [sage] 2015/12/07(月) 15:38:30.00 ID:6rSJBSiX(1) AAS
結局いつ開放されるか分からないってのが曲者で
使い終わったら確実にリソースを開放してほしいときは
別の仕組みが必要になってしまったってのが問題だろう
その別の仕組も、C++のデストラクタのようにクラスのメンバに関して
芋づる式に呼び出す仕組みがないから
C++のデストラクタがやっていることを手動で再現しなければならない始末
一方でC++のスマポなどの参照カウンタ方式は循環参照だけが問題だが
それ以外の問題が一切発生しない、デメリットは循環参照だけ
しかも循環参照が発生する場合は片方をweak_ptrにすれば良い
ということが分かりきっているし、循環参照が発生する箇所も
設計段階でわかる
循環参照に気を配れる知能が有るのであれば、参照カウンタ方式のほうがスマート
処理速度やタイミングがシビアな組み込みや科学技術計算系とかならいざしらず、
ソレ以外は、実際の解放のタイミング自体は問題にならんでしょ。(膨大なメモリの使用も別だけど)
問題は、使い終わったよーって明示しないで良い。という運用が結局、悪い結果をもたらしているという点。
メモリの管理をしっかり最後までやるクセのないプログラマは、
平然と参照が途切れている可能性のあるポイントで参照しに行こうとする。
結局は、そいつがバカだからに集約されてしまうんだけど、使い終わりの明示をしない文化がバカを生む土壌となっている
250(1): デフォルトの名無しさん [sage] 2015/12/08(火) 16:25:08.60 ID:RVFMry3L(2/3) AAS
>>246JavaでPhantomReferenceも使ったこと無い人って恵まれてるんだなあって思う
>>249249(2): デフォルトの名無しさん [sage] 2015/12/08(火) 16:16:30.38 ID:zjJIjn6V(1/2) AAS
参照がなくなったタイミングで必ず開放してくれて
かつ
循環参照でも問題ない
パーフェクトなGCが有れば最高なわけだが
実際にはそんなGCは無い
となれば、通常であれば言語側は性質の異なる複数のGCを用意しておいて
使う側はシチュエーションに合わせて選べるようにしておくのが自然な発想
しかしそういう言語は殆ど無い、これが問題
といってもマークスイープ系GCが前提のC#やJavaのような言語に
RAIIの発想を持ち込もうとしても
C++のデストラクタのように自身のメンバのデストラクタを自動で芋づる式に呼び出す仕組みが
元々無いので、手動で芋づる式に解放関数を呼び出すコードを書かなければならなく
うまく行っていない
無いのでってもろにAutoCloseableとかあるやん
257: デフォルトの名無しさん [sage] 2015/12/08(火) 22:39:35.60 ID:RVFMry3L(3/3) AAS
>>251251(1): デフォルトの名無しさん [sage] 2015/12/08(火) 16:37:24.80 ID:zjJIjn6V(2/2) AAS
>>250
自分のクラスがファイルなんかのcloseを持つリソースをメンバに持っていたとする
そうすると、それらのメンバのリソースを明示的にcloseできるようにするために
自身もcloseを実装することになるだろう
それで、自身のcloseが呼ばれた時、勝手にメンバのcloseが呼ばれるか?
結局手動でメンバのcloseを呼び出しまわるコードを書かなければならない
C++のデストラクタならメンバのデストラクタが芋づる式に勝手に呼び出されるから
気にしなくて良い
C++もヒープ相手は自分で呼ぶので、実装は必要だよ
Javaでもメンバの特定メソッド呼び出しはやろうと思えばできる
現実に横断的な呼び出しをやる場合はある
結局要求される物と実装の問題
569: デフォルトの名無しさん [sage] 2016/07/06(水) 07:12:12.60 ID:aYInvTWe(1) AAS
>>568まずガベージだらけの頭の中を整理すべき
587: デフォルトの名無しさん [sage] 2016/08/24(水) 22:31:11.60 ID:N/sC1Ga3(2/2) AAS
>>586で、具体的には出せないと言うことね
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.046s