colyseus / colyseus-unity-sdk

âš” Colyseus Multiplayer SDK for Unity
https://docs.colyseus.io/getting-started/unity-sdk/
MIT License
371 stars 102 forks source link

UnityWebRequest in ColyseusRequest class causes memory leaks in newer versions of Unity #160

Closed jushii closed 3 years ago

jushii commented 3 years ago

Currently resources used by UnityWebRequest in ColyseusRequest aren't disposed and this can cause a memory leak in newer versions of Unity. I've only tested this on Unity version 2021.2.0a17.2411 (yeah I know, alpha! 😄) but there has been reports about the same issue happening with other versions of Unity as well.

According to Unity documentation UnityWebRequest must be disposed after it's been used.

Using declaration fixed the issue on my machine. Probably needs a bit more testing to be sure! using UnityWebRequest req = new UnityWebRequest();

Here's the stack trace:


Unity.Collections.NativeArray`1:.ctor(Byte[], Allocator)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
Colyseus.<Request>d__3:MoveNext() (at Library\PackageCache\io.colyseus.sdk@0e3877dc56\Runtime\Scripts\ColyseusRequest.cs:91)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<Request>d__3&)
Colyseus.ColyseusRequest:Request(String, String, Dictionary`2, Dictionary`2)```