Compartir tecnología

Unity 报错 No se ha eliminado una colección nativa, lo que genera una pérdida de memoria.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

No se ha eliminado una colección nativa, lo que ha provocado una pérdida de memoria. Asignado desde:
Unity.Collections.NativeArray1:.ctor(Byte[], Asignador)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm)

El texto completo del error es el anterior.

Veamos primero las soluciones.

usando (var solicitud = UnityWebRequest.Post(serverURL, "POST"))
usando (var uh = nuevo UploadHandlerRaw(bodyRaw))
        {
//solicitud.disposeUploadHandlerOnDispose = verdadero;
//solicitud.disposeDownloadHandlerOnDispose = verdadero;
//solicitud.disposeCertificateHandlerOnDispose = verdadero;
solicitud.SetRequestHeader("Tipo-de-contenido", "application/json;charset=utf-8");
solicitud de retorno de rendimiento.SendWebRequest();
        }

Se puede solucionar juntando dos usos.

Después de verificar mucha información en Internet, muchas personas dijeron que el controlador de carga que crearon no se publicó, lo que provocó una pérdida de memoria.

Mucha gente dice usar

//solicitud.disposeUploadHandlerOnDispose = verdadero;
//solicitud.disposeDownloadHandlerOnDispose = verdadero;
//solicitud.disposeCertificateHandlerOnDispose = verdadero;

Estará bien si configuras estos tres, pero lo probé y el efecto no fue el ideal. Puede deberse a problemas con Unity en sí o puede deberse a cambios.

Entonces pensé, ¿está bien liberar el controlador de carga manualmente? Darle una oportunidad,

solicitud.uploadHandler.Dispose();

El efecto no es ideal. Incluso escuché a un anciano en Internet decir que se usara un constructor para crearlo.

byte[] bodyRaw = Codificación.UTF8.GetBytes(enviar_datos);
webRequest.uploadHandler = nuevo UploadHandlerRaw(bodyRaw);

El mismo efecto no es ideal.

luego en

No se ha eliminado una colección nativa, lo que ha provocado una pérdida de memoria. - Foro de Unity

La solución se encuentra al final de esta página. Gracias hermano. Resuelto un problema que me ha estado molestando durante mucho tiempo.

Descubrí este foro en el blog de otro autor.

https://blog.csdn.net/Miner_W/article/details/129400923

Gracias también a este viejo.