Κοινή χρήση τεχνολογίας

Unity 报错 Μια εγγενής συλλογή δεν έχει απορριφθεί, με αποτέλεσμα διαρροή μνήμης.

2024-07-12

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

Μια Native Collection δεν έχει απορριφθεί, με αποτέλεσμα διαρροή μνήμης. Κατανεμήθηκε από:
Unity.Collections.NativeArray1:.ctor(Byte[], Allocator)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm)

Το πλήρες κείμενο του σφάλματος είναι όπως παραπάνω

Ας δούμε πρώτα τις λύσεις

χρησιμοποιώντας (var request = UnityWebRequest.Post(serverURL, "POST"))
χρησιμοποιώντας (var uh = νέο UploadHandlerRaw(bodyRaw))
        {
//request.disposeUploadHandlerOnDispose = true;
//request.disposeDownloadHandlerOnDispose = true;
//request.disposeCertificateHandlerOnDispose = true;
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
yield return request.SendWebRequest();
        }

Μπορεί να λυθεί συνδυάζοντας δύο χρήσεις

Αφού έλεγξαν πολλές πληροφορίες στο Διαδίκτυο, πολλοί άνθρωποι είπαν ότι το uploaderhandler που δημιούργησαν δεν κυκλοφόρησε, γεγονός που προκάλεσε διαρροή μνήμης.

Πολλοί λένε να χρησιμοποιήσετε

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

Θα είναι εντάξει αν ορίσετε αυτά τα τρία, αλλά το δοκίμασα και το αποτέλεσμα δεν ήταν ιδανικό Μπορεί να οφείλεται σε προβλήματα με το ίδιο το Unity ή μπορεί να οφείλεται σε αλλαγές.

Μετά σκέφτηκα, είναι εντάξει να απελευθερώσω το uploadhandler χειροκίνητα; Δοκίμασε το,

request.uploadHandler.Dispose();

Το εφέ δεν είναι ιδανικό. Άκουσα ακόμη και έναν γέρο στο Διαδίκτυο να λέει να χρησιμοποιήσει έναν κατασκευαστή για να το δημιουργήσει.

byte[] bodyRaw = Encoding.UTF8.GetBytes(send_data);
webRequest.uploadHandler = νέο UploadHandlerRaw(bodyRaw);

Το ίδιο αποτέλεσμα δεν είναι ιδανικό.

μετά μέσα

Μια Native Collection δεν έχει απορριφθεί, με αποτέλεσμα διαρροή μνήμης. - Φόρουμ Unity

Η λύση βρίσκεται στο κάτω μέρος αυτής της σελίδας. Σ 'ευχαριστώ, αδερφέ. Έλυσε ένα πρόβλημα που με απασχολούσε εδώ και καιρό.

Ανακάλυψα αυτό το φόρουμ σε ιστολόγιο άλλου συγγραφέα.

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

Ευχαριστώ και αυτόν τον γέρο.