Обмен технологиями

Unity 报错 Собственная коллекция не была удалена, что привело к утечке памяти.

2024-07-12

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

Собственная коллекция не была удалена, что привело к утечке памяти. Выделено из:
Unity.Collections.NativeArray1:.ctor(Байт[], Аллокатор)
UnityEngine.Networking.UploadHandlerRaw:.ctor(Byte[])
UnityEngine.Networking.UnityWebRequest:SetupPost(UnityWebRequest, WWWForm)

Полный текст ошибки указан выше.

Давайте сначала посмотрим на решения

используя (var request = UnityWebRequest.Post(serverURL, "POST"))
используя (var uh = new UploadHandlerRaw(bodyRaw))
        {
//request.disposeUploadHandlerOnDispose = true;
//request.disposeDownloadHandlerOnDispose = true;
//request.disposeCertificateHandlerOnDispose = true;
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
возврат запроса.SendWebRequest();
        }

Эту проблему можно решить, соединив два использования вместе.

Проверив большое количество информации в Интернете, многие люди говорили, что созданный ими обработчик загрузки не был выпущен, что вызвало утечку памяти.

Многие говорят, что нужно использовать

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

Будет хорошо, если вы установите эти три, но я попробовал и эффект оказался не идеальным. Возможно, это из-за проблем с самим Unity, а может быть из-за изменений.

Потом я подумал, можно ли освободить обработчик загрузки вручную? Попробуйте,

запрос.uploadHandler.Dispose();

Эффект не идеальный. Я даже слышал, как один старик в Интернете говорил, что для его создания нужно использовать конструктор.

byte[] bodyRaw = Кодировка.UTF8.GetBytes(send_data);
webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw);

Тот же эффект не идеален.

затем в

Собственная коллекция не была удалена, что привело к утечке памяти. - Форум Unity

Решение находится в самом низу этой страницы. Спасибо, брат. Решил проблему, которая меня беспокоила долгое время.

Я обнаружил этот форум в блоге другого автора.

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

Спасибо и этому старику.