Compartilhamento de tecnologia

Unity 报错 A Native Collection não foi descartada, resultando em um vazamento de memória.

2024-07-12

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

Uma Native Collection não foi descartada, resultando em um vazamento de memória. Alocado de:
Unity.Collections.NativeArray1:.ctor(Byte[], Alocador)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm)

O texto completo do erro é o acima

Vejamos as soluções primeiro

usando (var request = UnityWebRequest.Post(serverURL, "POST"))
usando (var uh = novo UploadHandlerRaw(bodyRaw))
        {
//request.disposeUploadHandlerOnDispose = verdadeiro;
//request.disposeDownloadHandlerOnDispose = verdadeiro;
//request.disposeCertificateHandlerOnDispose = verdadeiro;
request.SetRequestHeader("Tipo de conteúdo", "application/json;charset=utf-8");
retornar solicitação.SendWebRequest();
        }

Pode ser resolvido juntando dois usos

Depois de verificar muitas informações na Internet, muitas pessoas disseram que o uploaderhandler que criaram não foi lançado, o que causou um vazamento de memória.

Muitas pessoas dizem para usar

//request.disposeUploadHandlerOnDispose = verdadeiro;
//request.disposeDownloadHandlerOnDispose = verdadeiro;
//request.disposeCertificateHandlerOnDispose = verdadeiro;

Tudo bem se você definir esses três, mas eu tentei e o efeito não foi o ideal. Pode ser por causa de problemas com o próprio Unity ou por mudanças.

Então pensei: posso liberar o uploadhandler manualmente? De uma chance,

solicitação.uploadHandler.Dispose();

O efeito não é o ideal. Até ouvi um velho na Internet dizer para usar um construtor para criá-lo.

byte[] bodyRaw = Codificação.UTF8.GetBytes(send_data);
webRequest.uploadHandler = novo UploadHandlerRaw(bodyRaw);

O mesmo efeito não é ideal.

então em

Uma coleção nativa não foi descartada, resultando em um vazamento de memória. - Fórum Unity

A solução é encontrada no final desta página. Obrigado mano. Resolvi um problema que me incomodava há muito tempo.

Descobri este fórum no blog de outro autor.

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

Obrigado também a este velho.