Показать сообщение отдельно
Старый 30.04.2015, 18:07   #22 (Ссылка на пост)
PhoeniXX
Уже сменил себе статус
 
Аватар для PhoeniXX
Пол:
 
Активность Longevity
6/20 18/20
Today Сообщения
0/5 sssss2273
Благодарил(а): 3,351
Благодарили 1,822 раз в 866 постах
Галерея: 0
Вес репутации: 32 PhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущееPhoeniXX заслуживает бриллиантовое будущее
Цитата:
Сообщение от ПВО Посмотреть сообщение

Код:
                if ( i+100 < arrlenght )
                {
//                  stringArray[i - 1] = textBox1.Text; // Сначала я записывал строку в массив
                    for (int n = 0; n < 100; n++) { str = str + textBox1.Text; } // Потом дописывал строку в переменную стринг
                    i = i + 100;
                }
Так как в массив строк stringArray сохраняется тот же экземпляр строки, то новую память он не использует, а просто создаёт новые ссылки на ту же строку. И как следствие испольуземые память растёт очень медленно - по 4\8 байт за проход.

Во втором случае с str = str + textBox1.Text - да, тут память используется активнее, но так как промежуточные состояния переменной str нигде не сохраняются, то и они очень быстро уничтожаются GC в процессе работы метода.

При данном подходе компромиссом будет где-то такое внутри цикла, который будет выполнять этот кусок для каждого элемента массива:

Код:
str = str + textBox1.Text; 
stringArray[i - 1] = str;
Ну и плюс, если нужно занимать определённое кол-во памяти, тогда вместо textBox1.Text должно быть значение в коде, чтобы можно было посчитать размер памяти используемый в процессе.

Опять же, это private память, а не shared, и таким образом процесс просто будет забирать свободную память у системы(наверняка файловый кэш), и все остальные процессы начнут активно свапиться, и как следствие все приложения начнут тупить.
PhoeniXX вне форума  
Ответить с цитированием
Эти 2 пользователей сказали Спасибо PhoeniXX за хороший пост:
Lester (30.04.2015), ПВО (30.04.2015)