5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Metalがやたらメモリリークする問題

Posted at

#特に何もしてないのにメモリ使用量がやたら増える
前回の記事( https://qiita.com/shunga/items/33937906188674b85a7b )でGPUフレームキャプチャを使うとMetalのデバッグが捗ると書いたが、ふと他のゲージを見るとメモリの数字がジワジワ上がっていくことに気づいた。グラフを表示して数分間放置してみると、明らかに時間に比例して使用量が増えていることがわかる。なんだこりゃ。
スクリーンショット 2018-10-30 11.52.07.png
これは前回で使った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も無効になるようなので、いじるところは実質ひとつだけでいい。

##直ったーーー!
スクリーンショット 2018-10-30 13.09.42.png
表示したまま数分放置してみたが、メモリ使用量はほぼ一定のままであった。一件落着....はいいんだけど、ということはフレームキャプチャとメモリリークのデバッグは同時にできないということになってしまった。はよ直らんかなこれ。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?