19

WinRTにガベージコレクションがありますか?WinRTにガベージコレクションがありますか?

また、COMと同様に参照カウントを行いますか?

+1

はいWinRTにはガベージコレクションがありますが、より興味深いのはどのような並べ替えですか? (参照カウントは、VB6のようにVB6のようにプログラマーから隠れていると有効なタイプのガベージコレクションです) –

+0

* "WinRTにガベージコレクションはありますか?" - はい。 * "COMのように参照カウントをしますか?" * - それもガベージコレクションです。 [ガベージコレクションは間違った考え方だと思う](https://blogs.msdn.microsoft.com/oldnewthing/20100809-00/?p=13203):* "ガベージコレクションは**無制限のメモリ**プログラムによって気付かれないメモリを取り戻すことができなくなってしまいました」* – IInspectable

答えて

23

私はMicrosoftのMartyn Lovellを引用され、this articleが見つかりました:

"WinRTのオブジェクトは真円を避けるために弱参照とメモリー管理のためのCOM、 のような参照カウントされています。"

明らかに、これはWinRT内部でのBUILD conventionでの講演で言及されました。

+8

ちょっと明白ですが、WinRTを使用した.NETアプリケーションでもGCが実行されていることを明確にする価値はあります.NETオブジェクトを処理します。同様に、JSには独自のオブジェクト用のGCがあります。これは、参照されたWinRTオブジェクトだけです。 –

+0

.NETの一番下には、Win32とCOMもありますが、これも参照カウントされます。 Metro C++/CLI(-ish)アプリケーションが参照カウントされているということと同じくらい真実であると、.NETがそれを参照すると述べています。 – dalle

+4

@dalle .NETオブジェクトはCOMオブジェクトではないという意味で、.NETの一番下にCOMはありません。しかし、WinRTオブジェクトはCOMオブジェクトであり、 'IUnknown'を実装しています。そして、はい、新しい/ Zwコンパイラ構文を使ったMetro C++アプリケーションでは、 'Add class '/' Release'を使って 'ref class'型のインスタンスを参照しています。文字列ですが、独自のrefcounting関数を持っています。 '/ FAs'でコンパイルし、自分自身で参照してください。 –

関連する問題