文書の過去の版を表示しています。
ぷらし~ぼ
概要
ダンス中に、不要メモリの解放処理1)を停止させることで、メモリ解放処理由来のかくつきを押さえるプラグイン。
ダウンロード
詳細
ダンス中に不要となったメモリを自動的に解放するGarbageCollector(GC)を停止させることで、定期的に発生していたGC由来のかくつきを軽減します。
また、他のプラグインから連動できるようにインターフェースを持っています。
設定でワーキングセット2)の上限とGC対象メモリの上限の設定が出来ます。
ワーキングセットの上限を超えた場合、GC停止処理は無効(GCが再開される)となりシーンが切り替わるまでGC停止は行えなくなります。
GC対象メモリの上限を越えた場合、即時GCが行われGC停止状態は維持されます。
※何れのチェックもGC停止中のフレーム処理中に毎秒行われます。
(そのため上限を超える時間がある程度発生します、余裕を見て設定してください。)
設定はファイルを直接書き換えるか、プラグイン起動中ならば同梱の設定「ぷ」ろぐらむで行えます。
注意事項
メモリ解放処理を止めるのでメモリの消費量が増大します。
メモリに余裕がない環境での使用は避けてください。
DanceCameraMotionのダンスについて
DanceCameraMotion 6.4.1でぷらし~ぼに対応していただきました。
DanceCameraMotion 6.4.1以降であれば、自動的に連動します。
ちょっと技術的な話
ガベージコレクションについて
使われなくなったメモリを自動的に解放する機能、プログラムで明示的に解放しなくてもよい代わりに、勝手に行われるため意図しないタイミングでかくつきが発生したりする。
新しいUnityはインクリメンタルガベージコレクション3)に対応していますが、オダメが使用しているものは対応していません。
ガベージコレクションは「ながら」処理が行いにくい処理で、Unityでは全体が停止するような動作になります。
「ぷ」ろぐらむが表示しているメモリについて
「ぷ」ろぐらむが表示しているメモリは以下の二つ。
- ワーキングセット(PSAPIのGetProcessMemoryInfoで取れるもの)
- GC対象メモリ(GC.GetTotalMemoryで取れるもの)
さらに技術的な話
オダメが使用しているUnityはGarbageCollector.GCModeにも対応していないので、Unity(mono)の内部関数を直接呼び出しています。
外部リンケージ4)を持たない内部関数をどうやって呼ぶかはGC停止の方法で解説しています。
要は実装されている関数順で、近くにある外部リンケージを持つ関数からの序数アクセスしています、従ってオダメが使用しているUnityのバージョンが変わって並び順等が変化した場合、正体不明の関数を訳のわからない引数で呼び出すことになり確実に誤動作します。
※要はオダメのバージョンよりオダメが使用しているUnityのバージョンが変わったときに互換性問題が発生します。
コメント