C# заставляет гореть!

Общие вопросы о Unity3D

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 15:51

samana писал(а):
NAGIBATOR228pacan писал(а):Кароче при создании объекта(объекты создаются последовательно) он должен сгенерировать массив длины зависящий количества вершин(а их может быть от 0 до сотен тысяч), построить на этой основе меш, сам массив дальше уже не нужен, поэтому я сделал его статическим основываясь на логике что если объекты последовательно создаются то можно сделать всего один массив на всех и просто его заново использовать для каждого объекта, но все было бы хорошо если бы массив был одной длины и его не надо было пересоздавать, но у меня массив всегда разного размера, и его надо пересоздавать и как я понял когда его пересоздаешь он не освобождает память выделенную на старый массив и поэтому происходит такая дичь, потому что вручную освободить память как в c++ нельзя

Есть подозрение, что причина не в массивах, но попробуйте в конце очистить массив и вызвать сборщик мусора для эксперимента.
Посмотрите в профайлере, что занимает столько памяти.
1max1 писал(а):Могу тебя обрадовать, в юнити можно использовать код С++ и даже С, для этого есть https://docs.unity3d.com/ru/current/Man ... ugins.html

Теперь у автора темы нет никаких причин чтобы не сделать шедевр :D

Я делал так чтобы массивы не создавались и память не жрется дело точно в них, сборщик вызывал ничего он не дал, причем если сделать статический список которому в начале присвоишь null и создашь заново то утечки памяти не возникает, только вот мне массив нужен чтобы отравить в плагин, потому что как я понял списки отправлять нельзя
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 15:57

1max1 писал(а):Кстати, я бы не ориентировался на редактор, он у меня тоже поджирает и не хочет освобождать память. Делай тесты уже в готовом билде.

Ща посмотрю
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение samana 14 апр 2019, 16:02

Вы говорили, что создаёте меш по этим вершинам, может где-то остаются копии этих массивов?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 16:05

NAGIBATOR228pacan писал(а):
1max1 писал(а):Кстати, я бы не ориентировался на редактор, он у меня тоже поджирает и не хочет освобождать память. Делай тесты уже в готовом билде.

Ща посмотрю

В билде если добавить GC.Collect то жрет чуть меньше, но со спсиками жрет в 2,5 раза меньше
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение 1max1 14 апр 2019, 16:06

Так юзай списки, это тот же массив.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 16:14

samana писал(а):Вы говорили, что создаёте меш по этим вершинам, может где-то остаются копии этих массивов?

Массивы нигде не копирую и нигде не объявляю я предполагаю что это связанно с тем что массивы при пересоздании используют новую память, а не переписывает старую потому что даже если в c++ не написать delete то будет происходить тоже самое, кароче пока я понял что лучше забить и так нормально оптимизировал с 15-20 секунд до 8-10 перекинув генерацию шума на c++, лучше сам код улучшить ибо он далеко не идеальный, там все равно даже если эту проблему решить еще несколько есть связанных с тем что списки похоже нельзя перекидывать(или можно, но unity выдает какую-то ошибку, а нагуглить на эту тему не получается нормально), и поэтому заместо того чтобы отправить список и получить его обратно я занимаюсь такой фигней что я сначала генерирую списке в плагине, получаю длину этих списков передаю в unity, создаю эти долбанные прожорливые массивы, опять обращаюсь к плагину чтобы заполнить эти массивы переведя списки из плагина в эти массивы и только потом строю меш и это даже медленнее получается, поэтому там еще проблем решить надо так что легче забить и считать только шум. Сейчас правда пришла мысль что может из плагина можно как-то устанавливать меш тогда и проблем всех этих не будет
Последний раз редактировалось NAGIBATOR228pacan 14 апр 2019, 16:20, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 16:15

1max1 писал(а):Так юзай списки, это тот же массив.

Списки у меня не получается перекинуть в плагин и получить список с плагина тоже
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение 1max1 14 апр 2019, 16:19

list.ToArray - в с++
new List<int>(array) - из с++
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 16:28

1max1 писал(а):list.ToArray - в с++
new List<int>(array) - из с++

К сожалению, не все так просто, чтобы получить данные со списка который в плагине мне надо отправить массив, но этот массив не может быть пустым, а должен быть больше длины списка иначе он ничего не запишет туда. кароче в такой функции в плагине void(Vector3 a[]) a = pluginlist.data();//я использую std vector, то он ничего не вернет, если в unity отправить пустой массив, надо отправлять с размером больший или равный чем размер списка, и поэтому нельзя кароче списки использовать если бы вот их можно было передавать то было бы другое дело или хотя бы функцию возвращающую массив vector3 но мне ошибка пишется что нельзя использовать функцию с кастомными классами. Поэтом я решил делать такой костыль что я сначала узнаю размер списков создаю в юнити массивы и потом только их заполняю, но тут проблема с этой оперативкой вылезла, инфы по этим плагинам вообще мало, гуглить даже тяжело особенно мне с плохим английским, так что я даже не знаю что можно что как и делаю методом тыка и то что я сейчас пишу это лишь наблюдения и попытки кривого перевода ошибок так что скорее всего все что я пишу неверно и как-то можно перекидывать кароче вообще мне ничего не понятно
Последний раз редактировалось NAGIBATOR228pacan 14 апр 2019, 16:40, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение samana 14 апр 2019, 16:39

NAGIBATOR228pacan писал(а): чтобы получить данные со списка который в плагине мне надо отправить массив, но этот массив не может быть пустым, а должен быть больше длины списка иначе он ничего не запишет туда

Какой-то странный функционал у плагина. До сих пор терзает подозрение, что что-то не так делается.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 14 апр 2019, 16:44

samana писал(а):
NAGIBATOR228pacan писал(а): чтобы получить данные со списка который в плагине мне надо отправить массив, но этот массив не может быть пустым, а должен быть больше длины списка иначе он ничего не запишет туда

Какой-то странный функционал у плагина. До сих пор терзает подозрение, что что-то не так делается.

Да конечно делается не так это все костыли которые я буду исправлять, может как-то изящнее это делается, нагуглить вообще не получается вот незнаю что просто в поиске пишу что-то типа unity pass list to plugin и вижу нефига только как отправить массив, я вообще пришел к тому что надо в плагине меш устанавливать может как-то если да то так вообще все будет идеально и в скрипте unity надо будет лишь одну фнкцию из плагина вызвать.

Только что узнал что оказывается все таки можно перекидывать самописные классы, но насчет списков все равно пока печально
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение seaman 14 апр 2019, 19:08

когда его пересоздаешь он не освобождает память выделенную на старый массив

Неверно. Со временем GC эту память освободит без вариантов.
создаёте меш по этим вершинам, может где-то остаются копии этих массивов?

Самая верная реплика. Память под массив может и освобождается, но меши то остаются! Они что по Вашему памяти не занимают вовсе?
list.ToArray

Останется и list и появится новый массив. И то и другое со временем освободит память (если нет ошибок в коде), по до этого занятая память возрастет вдвое.
C# заставляет гореть!

Незнание инструмента и безапеляционные заявления заставляют гореть.

Вообще разговор абсолютно пустой. Нет кода, нет анализа занятой памяти. По сути весь тред - "Бла-бла-бла..."
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: C# заставляет гореть!

Сообщение Cr0c 14 апр 2019, 21:05

NAGIBATOR228pacan писал(а):можно ли где-то подработать на unity не на серьезном проекте, без всякого устройства, я кароче в этом не эксперт абсолютно, потому что я нигде никогда еще не работал

NAGIBATOR228pacan писал(а):Я просто не понимаю какими надо быть аутистическими даунами чтобы заместо c++ додуматься сделать c# в движке для ИГР!?!?!??

seaman писал(а):Незнание инструмента и безапеляционные заявления заставляют гореть.

Чувак сделал статик, но не в курсе, что new[] создаёт новый массив, не убивая старый. Это уже показатель. Он даже не попытался переиспользовать массив, в конце концов. Но при этом - критикует ))
Может, он считает, что плюса - это "прям сразу" кроссплатформенный ЯП? :))
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: C# заставляет гореть!

Сообщение Friend123 14 апр 2019, 22:50

Cr0c писал(а):Может, он считает, что плюса - это "прям сразу" кроссплатформенный ЯП? :))

Нет, он считает, что он дно, но может сделать майнкрафт
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: C# заставляет гореть!

Сообщение Saltant 15 апр 2019, 00:22

Мне вообще интересно чего там ТС такое мутит что средствами C# не реализуется, я пока вообще проблем ни каких с этим языком не нашел в плане функционала.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Пред.След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13