【Unity】A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces to get more details. と出たら… 
2023/04/01 Sat [edit]
久しぶりに UniVRM を 0.108 にアップデートしてみたら、以下のエラーが出るようになった。
しかし、エラーメッセージはそれだけで、何も情報が出てこない。どうやらメモリーリークしてるようだが、以前は出てなかったので恐らく実装が変わったのだろう。翻訳すると「フルスタックトレースを有効にして詳細を得よ」と書いてあるが、それどこにあるの?ってググってみた。そしたら以下のページが出てきた。
(参考) A Native Collection has not been disposed, Enable Full Stack?
どうやら Jobs をパッケージマネージャでインストールすれば、メニューに出てくるようだ。やってみたら、詳細のエラーログが出るようになったので、Unity 初心者でもわかるように詳しく手順を書いておこう。
(※) Unity 2020.3.34f1 / Windows11(x64) で確認
1.「Edit>Project Settings...」から「Package Manager」を表示し、「Enable Preview Packages」「Show Dependencies」のチェックをオンにする(※現時点では Jobs が Preview のため。Stable になったら、この手順は必要無くなると思う)。
2.「Window>Package Manager...」を開き、「Unity Registry」にして「Jobs」をインストールする。
3. インストールが終わったら(結構時間かかる)、上部のメニューから「Jobs>Leak Detection>Full Stack Traces (Expensive)」をオンにする(※「Expensive」とあるので、負荷が高くなる=動作が重くなる ので注意)。

これでエラー時に詳細なスタックトレースが Console に出るようになる。

私が改修していた UniVRM 0.108 では GltfData がメモリーリークしていたらしい(クラス内部で NativeArray を使ってるっぽいので、Dispose する必要があるのだろう)。using で囲めばエラーは出なくなった。参考ページでは WWW を using で囲ってるね。その手のオブジェクトを疑ってみれば良いだろう。
(参考) A Native Collection has not been disposed, Enable Full Stack?
(関連記事)
【Unity】SymGetSymFromAddr64, GetLastError: '無効なアドレスにアクセスしようとしています。' と出たら…
【Unity】Unity2018 でビルドエラー「CommandInvokationFailure: Gradle build failed.」が出る
【Unity】IncrementalCompiler でのエラー:Unloading broken assembly Packages/com.unity.incrementalcompiler/Editor/Plugins/Unity.PureCSharpTests.dll, this assembly can cause crashes in the runtime
【Unity】【C#】モバイルビルド中の警告:Game scripts or other custom code contains OnMouse_ event handlers.~ を消す
【Unity】InitializeUnityExtensions: Must have a valid path for the plugin [XX] (XX:番号) というエラーの修正方法
【Unity】"~\Temp\Assembly-CSharp.dll.mdb" is denied. と出たら…
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/426-26f8ed8e
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |