Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122

System.OutOfMemoryException

29.04.2021, 14:15. Показов 4259. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть форма, на ней текстбоксы в которые пользователь вводит значения и кнопка для расчета некой задачки. Для самого расчета использую двумерные массивы, которые задаются так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 private void Button1_Click(object sender, EventArgs e)
{
            double[,] P1 = new double[N + 2, M + 2];
            double[,] P2 = new double[N + 2, M + 2];
            double[,] P3 = new double[N + 2, M + 2];
                 while (j < M)
                {
                    for (int i = 1; i <= N; i++)
                    {
                       //P1[i,j + 1] = //происходит магия;
                       //P2[i,j + 1] = //происходит магия;
                       //P3[i,j + 1] = //происходит магия;
                    }
                 }
}
При небольших значениях M и N всё работает как нужно, но стоит их увеличить как выпадает исключение System.OutOfMemoryException, HResult=0x8007000E, Сообщение = Выдано исключение типа "System.OutOfMemoryException".
Нужно ли принудительно удалять массивы в конце обработчика событий или где-то раньше? Если да, то как это сделать?
Читала, что в C# этого не нужно делать так как есть умный сборщик мусора. Но как тогда убрать это исключение?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2021, 14:15
Ответы с готовыми решениями:

System.OutOfMemoryException
Добрый. Есть список(List) объектов анонимного типа, полученный через linqtosql. Количество обьектов 100 тыщ - 40 млн. Объекты простейшие,...

Важно!При нажатии на кнопке выдает: using System; using System.Collections.Generic; using System
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

OutOfMemoryException
Делаю конвертер Pstgres &lt;-&gt; SQLlite вот https://www.cyberforum.ru/postgresql/thread1609892.html . Уже болие ли мение конвертится но...

25
dive
 Аватар для I can
4961 / 4657 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
29.04.2021, 14:20
Цитата Сообщение от Lorentinka Посмотреть сообщение
while (j < M)
А это что за странное условие?
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 14:41  [ТС]
Забыла в конце while дописать j++ . Здесь представлена только часть кода кнопки. Но суть такая, что есть несколько циклов, внутри проводятся какие-то вычисления. Но исключение вылетает в самом начале, на этапе объявления массива. До каких-то манипуляций
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 14:48
Цитата Сообщение от Lorentinka Посмотреть сообщение
При небольших значениях M и N всё работает как нужно, но стоит их увеличить как выпадает исключение System.OutOfMemoryException
Небольшие - это сколько? И на сколько увеличиваете?
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 14:53  [ТС]
Цитата Сообщение от gegbot Посмотреть сообщение
Небольшие - это сколько? И на сколько увеличиваете?
N = 90, M=1000000, увеличиваю M в два раза и вылетает исключение. Оно вылетает на объявлении массива P2, P1 удается объявить с такой размерностью, а в P2 и P3 уже null.
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 15:18
Цитата Сообщение от Lorentinka Посмотреть сообщение
N = 90, M=1000000
double занимает 8 байт, соответственно, массив 90х1000000 занимает 720000000 байт ~700 мб. У вам памяти хватает?
0
dive
 Аватар для I can
4961 / 4657 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
29.04.2021, 15:54
Цитата Сообщение от gegbot Посмотреть сообщение
~700 мб
И таких 3 массива.
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 16:00  [ТС]
Цитата Сообщение от gegbot Посмотреть сообщение
У вам памяти хватает?
Как это узнать?
В момент когда выдается исключение, значение памяти процесса достигает 1,4 ГБ.
А вот что получается в ходе диагностики.
Миниатюры
System.OutOfMemoryException  
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 16:14
Цитата Сообщение от Lorentinka Посмотреть сообщение
Как это узнать?
На компьютере у вас сколько оперативки?

Добавлено через 6 минут
Цитата Сообщение от Lorentinka Посмотреть сообщение
N = 90, M=1000000, увеличиваю M в два раза и вылетает исключение
Цитата Сообщение от Lorentinka Посмотреть сообщение
В момент когда выдается исключение, значение памяти процесса достигает 1,4 ГБ.
всё правильно: 700*2=1400, влезает только один массив.
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 16:16  [ТС]
6 ГБ
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 16:18

Не по теме:

Даже интересно, что за лаба у вас, с такими объемами



Добавлено через 1 минуту
Цитата Сообщение от Lorentinka Посмотреть сообщение
6 ГБ
а свободной?
0
dive
 Аватар для I can
4961 / 4657 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
29.04.2021, 16:25
Тут кое-что можно почитать
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 16:28  [ТС]
Цитата Сообщение от gegbot Посмотреть сообщение
а свободной?
Около 1 ГБ

Добавлено через 33 секунды
Цитата Сообщение от I can Посмотреть сообщение
Тут кое-что можно почитать
Спасибо, почитаю
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 16:34
Цитата Сообщение от Lorentinka Посмотреть сообщение
Около 1 ГБ
ну тут даже на х64 ваши массивы не влезут
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 17:18  [ТС]

Не по теме:

Да самая обычная лаба по численным методам. Решение уравнения реакции-диффузии



Добавлено через 42 минуты
Цитата Сообщение от gegbot Посмотреть сообщение
ну тут даже на х64 ваши массивы не влезут
Изменение платформы на x64 помогло(хотя я думала, что она по умолчанию стоит такой), при данных значениях всё считается, однако если накинуть ещё один нолик в M, то всё падает)
0
68 / 56 / 15
Регистрация: 30.01.2020
Сообщений: 332
29.04.2021, 17:33
Цитата Сообщение от Lorentinka Посмотреть сообщение
однако если накинуть ещё один нолик в M, то всё падает)
так и должно быть
10000000 * 90 * 8 = 7200000000 байт

Добавлено через 6 минут

Не по теме:

меня не покидает ощущение, что вы делаете что-то не то...

2
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 17:35  [ТС]
Цитата Сообщение от gegbot Посмотреть сообщение
так и должно быть
10000000 * 90 * 8 = 7200000000 байт
Понятно, значит я в принципе не могу столько просчитать.

Добавлено через 23 секунды
Цитата Сообщение от gegbot Посмотреть сообщение
меня не покидает ощущение, что вы делаете что-то не то...
Очень может быть! Но пока я не могу этого понять.
0
dive
 Аватар для I can
4961 / 4657 / 845
Регистрация: 13.04.2015
Сообщений: 9,848
29.04.2021, 17:40
Цитата Сообщение от Lorentinka Посмотреть сообщение
Очень может быть! Но пока я не могу этого понять.
Так озвучили бы свою задачу, на всякий случай, интересно же
0
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 17:58  [ТС]
Есть система 3-го порядка уравнений реакции-диффузии. Я её решаю численно методом конечных разностей, с помощью явной схемы. Собственно N это разбиение по x, M - разбиение по t. Система описывает жизнь некоторого биологического сообщества. В программе по нажатию кнопки происходит расчет численной траектории и отрисовка этой прелести на 3 графика. Нужно поймать момент(так подобрать параметры самой системы и параметры счёта), чтобы увидеть структуру на графиках.
Эксперименты показывают, что схема написано верно, при некоторых параметрах получается результат аналогичный результату для системы ОДУ(система такая же только без диффузии и частных производных).
Миниатюры
System.OutOfMemoryException  
1
4 / 4 / 0
Регистрация: 02.02.2016
Сообщений: 122
29.04.2021, 18:01  [ТС]
Может понадобиться большое время счёта, или может другие параметры системы. Попробовав увеличить время, а соответственно и разбиение, я получила нехватку памяти)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2021, 18:01
Помогаю со студенческими работами здесь

Ошибка запуска движка (OutOfMemoryException)
Почему при запуске следующего кода: using System; using System.Collections.Generic; using System.Drawing; using System.Linq; ...

Windows CE, OutOfMemoryException. Как бороться?
Доброго времени суток! Проблема в следующем. Пишу программу под ТСД (Windows CE) на .NET CF 3.5 (Compact Framework). На данный момент...

OutOfMemoryException при выводе большого файла через WriteAllBytes
Добрый вечер, прогнал файл весом 360 МБ через ReadAllBytes и получил код на 1 ГБ, при обратной операции (при переводе кода в файл через...

System.InvalidCastException: "Не удалось привести тип объекта "System.Byte[]" к типу "System.Drawing.Bitmap"."
Ошибка System.InvalidCastException: &quot;Не удалось привести тип объекта &quot;System.Byte&quot; к типу &quot;System.Drawing.Bitmap&quot;.&quot; Как...

Как исправить исключение System.StackOverflowException в System.Drawing.dll
An unhandled exception of type 'System.StackOverflowException' occurred in System.Drawing.dll что делать все работала нормально и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru