画面の読み込み中にガベージコレクターを呼び出す必要がありますか?


9

だから、私は最近、好奇心からガベージコレクションを少し読みましたが、かなり頻繁に繰り返されることがあります。ガベージコレクションは、コレクションの「深さ」によっては、プログラムの突然のスローダウンにつながる可能性があります。

しかし、ビデオゲームでは、ユーザーが実際に小さなラグに気付かない瞬間があります。それは、ロード画面です。したがって、読み込みフェーズ中に(Collect()を介して)完全なガベージコレクションに進むことが役立つと思いました。ユーザーに実際に影響を与えないように、1〜2秒待つ必要があります。

私の質問は、それは本当に便利ですか、またはこれを行うことには本当に利点がないのですか?


私のゲームのデバッグプロセスの一部として、私はユーザーにガベージコレクターをいつでも呼び出すオプションをユーザーに提供しました。状況によっては、ゲームの最終ビルドにも存在する場合があります。画面の読み込み中や、通常はユーザーの視覚的な邪魔にならないその他の時間に呼び出すことをお勧めします。ゲームに黒い画面になる死のアニメーションがある場合、これもガベージコレクターを呼び出す絶好の機会です。
Krythic 2016年

回答:


13

はい、ロード時に最後に行うこととしてそれを呼び出します。

これにより、レベルの開始からGCによる最初のラグまでの時間が最大になります。

レベル中にラグが発生しないように、一般的に割り当ても最小限に抑える必要があります。

360およびWP7のパフォーマンスの低下と、ガーベッジコレクターNirvanaへのツインパスを参照


1
また、特にコンパクトなフレームワーク(XBox、WinPhone)で呼び出す必要があるのは、かなり長い時間です。
ジョナサンディキンソン

1
@JonathanDickinson:もちろんです。これは、ユーザーが一時停止(通常はロード、おそらく保存も)を期待する場所でのみ実際に呼び出す必要があり、ループ/通常のイベントの一部としては絶対に呼び出さないでください。
George Duckett
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.