9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
1 | ||||||
Как уменьшить объём потребляемой оперативной памяти программой?09.02.2017, 11:01. Показов 2480. Ответов 16
Добавляю запись в таблицу MySql кодом
Принцип работы: Вводим количество записей, которое необходимо добавить. Запускаем. Программа добавляет необходимое количество записей в таблицу. Проблема. При работе программы растёт потребляемая ей оперативная память. Вопрос. Как сделать, чтобы потребляемая оперативная память программой в процессе работы оставалась на одном уровне?
0
|
09.02.2017, 11:01 | |
Ответы с готовыми решениями:
16
Как уменьшить объём потребляемой оперативной памяти? Как уменьшить количество потребляемой памяти Узнать, какой объём оперативной памяти занимает приложение Как уменьшить размер потребляемой памяти? |
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
09.02.2017, 11:28 | 2 |
писать свой драйвер для доступа к мускулу
2
|
Администратор
|
|
09.02.2017, 13:53 | 3 |
zakaz_77, можно попробовать использовать одно соединение, одну команду и одни и те жа параметры - меняя только их значения. Имеются в виду объекты MySqlConnection, MySqlCommand, MySqlParameter.
1
|
3356 / 1775 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
|
|||||||
09.02.2017, 13:56 | 4 | ||||||
Вот этого не понял. Вы все, к примеру 30 раз, по циклу выполняете данный метод?
У Вас выходит так:
Как сами думаете, что можно в этой схеме изменить? Именно! Как минимум:
Это если не разбирать что Вы и зачем делаете.
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|||||||||||
09.02.2017, 14:55 [ТС] | 5 | ||||||||||
В ТС привёл код условный.
Привожу оригинал, как у меня устроено... В "качестве бреда " добавил строчки с "откл / вкл" соединением через каждые 1000 записей... думал поможет.. Не помогло
Кликните здесь для просмотра всего текста
OwenGlendower, Если не сложно можно на моём примере, как-нибудь кратко показать... Или ссылку где предложенный вами вариант более подробно рассматривается Agapov_stas, см. код выше PS. В C# начинающий, поэтому прошу делать скидку на некорректность решений
0
|
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
|
|
09.02.2017, 15:12 | 6 |
Это нормально.
Плохо будет, если память начнет расти неограниченно, в конце-концов валя приложение с OutOfMemoryException. В вашем коде есть места, которые можно улучшить, однако это лишь немного уменьшит рост потребляемой памяти, но не остановит его полностью.
1
|
Администратор
|
||||||
09.02.2017, 16:00 | 7 | |||||
Сообщение было отмечено zakaz_77 как решение
Решение
zakaz_77, вот вариант с одной командой и использованием параметров
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
09.02.2017, 20:56 [ТС] | 8 | |||||
OwenGlendower,
Выдаёт ошибку Сообщение об ошибке см. скрин. Как выглядит таблица см. скрин. Перед началом добавлением записей в textBox52.Text ввожу - tbl, idsub, pol_3, pol_4, pol_5, pol_6, pol_7, pol_8, pol_9, pol_10, pol_11, pol_12, pol_13, pol_14, pol_15, pol_16, pol_17 Таблица Кликните здесь для просмотра всего текста
0
|
Администратор
|
|
09.02.2017, 21:07 | 9 |
zakaz_77, в мой пример вкралась опечатка. В строке №6 не хватает подчеркивания в имени параметра. Вместо @pol3 должно быть @pol_3.
P.S. При выкладывании скриншота не мешает задуматься о его качестве - текст должен читаться без усилий. В данном случае лучше было выложит два скриншота нормального размера.
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|
09.02.2017, 21:14 [ТС] | 10 |
OwenGlendower,
Ещё ошибка Не могли вы ещё посмотреть....
0
|
Администратор
|
|
09.02.2017, 21:30 | 11 |
zakaz_77, номера шаблонов подстановки - {N} в строке форматирования - и кол-во аргументов должны совпадать. На скриншоте видно что ты методу String.Format передается 18 аргументов для подстановки, а в строке форматирования используется шаблон с номером 18 - то есть нужен 19-й аргумент. Подумай самостоятельно как это нужно исправить.
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|
09.02.2017, 22:31 [ТС] | 12 |
OwenGlendower,
Всё равно не могу понять… Не работает Во всех интернет источниках синтаксис немножко другой… Что такое "Цифра 1" (16) и "Цифра 2" (17). См. скрин В вашем варианте это было "INSERT INTO {17} ({18}) VALUES В textBox52.Text ввожу tbl, idsub, pol_3, pol_4, pol_5, pol_6, pol_7, pol_8, pol_9, pol_10, pol_11, pol_12, pol_13, pol_14, pol_15, pol_16, pol_17
0
|
Администратор
|
||||||
10.02.2017, 00:14 | 13 | |||||
zakaz_77, string.Format принимает первым аргументом строку форматирования, за которым идут один или более аргументов для подстановки в строку форматирования на место обозначенное
{N} . Число N обозначает порядковый номер аргумента подстановки. Этот номер отсчитывается от 0 (также как индекс массива). Для корректной работы функции string.Format требуется чтобы ей были переданы все аргументы на которые "ссылается" строка форматирования.В рамках данного примера в строке форматирования указаны номера 0, 4...17. Значит после строки форматирования нужно передать 18 аргументов. В приведенном коде передается 19. Ошибка возникает потому аргументы с номерами 16 и 17 зачем-то подставляются два раза - один раз на место имени таблицы и списка колонок, второй раз в качестве значений. Еще одна проблема видимо в том что не хватает кавычек вокруг значений. Из первоначального примера не было ясно что из себя представляют эти колонки. Я решил что цифры. Вот новый исправленный ввриант в "классическом" стиле
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
|||||||||||
29.03.2017, 13:43 [ТС] | 14 | ||||||||||
OwenGlendower,
Можно ли данный фрагмент кода сделать через запятую или как-то по другом оптимизировать пространство занимаемое кодом? Т.е. исходный код
0
|
Администратор
|
||||||
29.03.2017, 14:07 | 15 | |||||
zakaz_77, простые значения (числа, строки) можно добавлять с помощью AddWithValue
1
|
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
|
||||||
29.03.2017, 15:39 [ТС] | 16 | |||||
OwenGlendower,
Попробовал соорудить, что-нибудь на базе AddRange. AddRange подчёркнуто красным и сообщение об ошибке : " 'MySqlCommand" не содержит определения для "AddRange" и не удалось найти метод расширения "AddRange", принимающий тип "MySqlCommand" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)"
0
|
29.03.2017, 15:48 | 17 |
1
|
29.03.2017, 15:48 | |
29.03.2017, 15:48 | |
Помогаю со студенческими работами здесь
17
Как бороться с увеличением объема потребляемой оперативной памяти при сохранении файла Excel без закрытия? Увеличение потребляемой оперативной памяти Ускорить загрузку программы и уменьшить количество потребляемой памяти Большой размер потребляемой оперативной памяти приложением Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |