#特に何もしてないのにメモリ使用量がやたら増える
前回の記事( https://qiita.com/shunga/items/33937906188674b85a7b )でGPUフレームキャプチャを使うとMetalのデバッグが捗ると書いたが、ふと他のゲージを見るとメモリの数字がジワジワ上がっていくことに気づいた。グラフを表示して数分間放置してみると、明らかに時間に比例して使用量が増えていることがわかる。なんだこりゃ。
これは前回で使ったAppleのサンプルコード"Hello Triangle"を手付かずの状態からビルドして実行したものである。ただ静止した三角形を表示しているだけなのに、こんな増え方は明らかにおかしい。Xcodeのバグかと思ってアクティビティモニタも見てみたが、こちらも同じように増えている。一体どういうことなのか。
##GPUフレームキャプチャを無効にすると直る
Shader memory leak on ios with metal. - Unity Answers
https://answers.unity.com/questions/1389095/shader-memory-leak-on-ios-with-metal.html
"Metal memoryleak"で検索すると同じように悩んでる奴が結構出てくるが、解決に至ったのは上の記事である。これによると、GPUフレームキャプチャとMetal API validationを無効にすると直るよ、とのことであった。
Configuring the GPU Frame Capture and Metal API Validation Tools | Apple Developer Documentation
https://developer.apple.com/documentation/metal/tools_profiling_and_debugging/metal_gpu_capture/configuring_the_gpu_frame_capture_and_metal_api_validation_tools
設定の変更の仕方はApple Devにある。ツールバーのところのプロジェクトアイコン(ビルドの▶︎と■の隣)をクリックしてからEdit scheme...を選択するとGPUフレームキャプチャとMetal API validationを無効にできる。どうやらフレームキャプチャを無効にすると同時にvalidationも無効になるようなので、いじるところは実質ひとつだけでいい。
##直ったーーー!
表示したまま数分放置してみたが、メモリ使用量はほぼ一定のままであった。一件落着....はいいんだけど、ということはフレームキャプチャとメモリリークのデバッグは同時にできないということになってしまった。はよ直らんかなこれ。