タイトル: リーク検出に関する Creator-js の記事
カテゴリ: Cocos2dx
タグ: [クリエイター, 最適化, リーク, メモリ]
日付: 2023-03-28 16:16:49
コメント: false
mathjax: true
toc: true
Creator-js のリーク検出に関する記事
前編
- 実際、方法は以前のegret_memory Analysis-leakage.mdと同じです。
ui をテストとして使用します。通常の状況では、ui を繰り返し開いたり閉じたりすると、ui インスタンスがリサイクルされます。
テスト 01 - 通常の回復
-
ここに 3 つのスナップショットがあります。1 つは UI がロードされていないもの、2 は UI がロードされているもの、3 つは UI が破棄されたものです
-
スナップショット 2 とスナップショット 1 を比較します
ui をロードした後、ui インスタンスを追加します (UIPnlxxx は UI クラス名のプレフィックスです)
-
スナップショット 3 とスナップショット 2 を比較します
uiを破壊すると、uiインスタンスが1つ減少します
-
スナップショット 3 とスナップショット 1 を比較します
ui インスタンスはありません。ui インスタンス オブジェクトが正常にリサイクルされたことを示します。
テスト 02 - 模擬リーク
-
イベント システムがこのインスタンスを参照できるように、ui の初期化時に意図的にイベントを登録します。
-
UI 操作は上記と同じで、スナップショット 3 とスナップショット 1 を直接比較します。
ui インスタンスが破棄されていないことがわかります。ui を開いて破棄し続けると、この数値が増加し続け、リークを示していることがわかります。
-
この ui クラスを展開し、ui インスタンスをクリックすると、下の [Retainers] 列にこの ui インスタンスの参照チェーンが表示され、イベント システムによって参照されていることがわかります。