Technologieaustausch

Unity-Fehler: Eine native Sammlung wurde nicht entsorgt, was zu einem Speicherverlust führte.

2024-07-12

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

Eine native Sammlung wurde nicht freigegeben, was zu einem Speicherverlust führte. Zugewiesen von:
Unity.Collections.NativeArray1:.ctor(Byte[], Allocator)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm)

Der vollständige Text des Fehlers lautet wie oben

Schauen wir uns zunächst die Lösungen an

mit (var request = UnityWebRequest.Post(serverURL, "POST"))
mit (var uh = neuer UploadHandlerRaw(bodyRaw))
        {
//request.disposeUploadHandlerOnDispose = true;
//request.disposeDownloadHandlerOnDispose = true;
//request.disposeCertificateHandlerOnDispose = true;
Anfrage.SetRequestHeader("Inhaltstyp", "application/json;charset=utf-8");
Rückgabewert der Anfrage: SendWebRequest();
        }

Es lässt sich lösen, indem man zwei Verwendungen zusammenfügt

Nachdem viele Informationen im Internet überprüft wurden, sagten viele Leute, dass der von ihnen erstellte Uploader-Handler nicht veröffentlicht wurde, was zu einem Speicherverlust führte.

Viele Leute sagen, zu verwenden

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

Es ist in Ordnung, wenn Sie diese drei festlegen, aber ich habe es versucht und der Effekt war nicht ideal. Möglicherweise liegt es an Problemen mit Unity selbst oder an Änderungen.

Dann dachte ich: Ist es in Ordnung, den Uploadhandler manuell freizugeben? Versuche es,

Anfrage.uploadHandler.Dispose();

Der Effekt ist nicht ideal. Ich habe sogar einen alten Mann im Internet sagen hören, er solle einen Konstruktor verwenden, um ihn zu erstellen.

byte[] bodyRaw = Kodierung.UTF8.GetBytes(send_data);
webRequest.uploadHandler = neuer UploadHandlerRaw(bodyRaw);

Der gleiche Effekt ist nicht ideal.

dann in

Eine native Sammlung wurde nicht entsorgt, was zu einem Speicherverlust führte. – Unity-Forum

Die Lösung finden Sie ganz unten auf dieser Seite. Danke, Bro. Ein Problem gelöst, das mich schon seit langem beschäftigt.

Ich habe dieses Forum im Blog eines anderen Autors entdeckt.

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

Vielen Dank auch an diesen alten Mann.