Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/50: Рейтинг темы: голосов - 50, средняя оценка - 4.88
60 / 59 / 11
Регистрация: 28.12.2011
Сообщений: 276
1

Заполнить оперативную память для отказа

23.05.2013, 08:48. Просмотров 9976. Ответов 10
Метки нет (Все метки)


Пытаюсь заполнить оперативную память, чтобы посмотреть как себя поведет система))
написал вот такой код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
 
namespace ozuTest
{
    class Program
    {
        static  List<MyBuffer> buffer = new List<MyBuffer>();
        static void Main(string[] args)
        {
            while (true)
            {
                MyBuffer buf = new MyBuffer();
                buffer.Add(buf);
                Console.WriteLine("Мегабайт загружено в память : " + (buffer.Count));
            }
 
        }
    }
 
    class MyBuffer
    {
        byte[] buf = new byte[1048576];
    }
}
но на 1500 с чем то вылезает исключение
OutOfMemoryException
как быть? почему мне нельзя использовать столько памяти сколько нужно?)
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2013, 08:48
Ответы с готовыми решениями:

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

Квота на оперативную память для пользователя
Как установить квоту на использование оперативной памяти для пользователя в Windows Server 2016?

Посоветуйте оперативную память для I5 9600kf
Посоветуйте,пожалуйста,оперативную память для I5 9600kf

Ищу оперативную память для ноута
Хочу увеличить объем ОП, нужно найти такую же планку ссылка на фото

10
536 / 537 / 181
Регистрация: 16.03.2012
Сообщений: 1,160
Записей в блоге: 2
23.05.2013, 08:52 2
Цитата Сообщение от Good1101 Посмотреть сообщение
OutOfMemoryException
Исключение, которое вызывается при недостаточном количестве памяти для дальнейшего выполнения программы. Вопрос, сколько у вас оперативки на ПК?
0
60 / 59 / 11
Регистрация: 28.12.2011
Сообщений: 276
23.05.2013, 09:00  [ТС] 3
у меня 16гб оперативной памяти. Пробовал иначе по 1024 байт добавлять в список, но опять при 1600 с чем то вылезло исключение, может есть какое-то ограничение на размер List ?) при этом в диспетчере задач используется только 4гб с чем-то всего. Ведь еще же может использоватся память жосткого диска при недостатке оперативной?
0
6020 / 3427 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
23.05.2013, 09:44 4
Good1101, не помню где, но мелькала такая инфа, что ОС выделяет на процесс не более 2ГБ ОЗУ. Так сказать "защита от горе-программеров, которые не контролируют свою память"
0
709 / 676 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
23.05.2013, 09:45 5
вам clr не выдаст столько памяти чтобы засрать 16гб оперативки
0
Эксперт Java
4072 / 3806 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.05.2013, 10:09 6
Вот такая программа - забивает все что есть. Буфер заполняется - чтобы можно было видеть потребление памяти в стандартном диспетчере задач (Он показывает только Working Set)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        static List<byte[]> buffer = new List<byte[]>();
        static void Main()
        {
            while (true)
            {
                var buf = new byte[1048576];
                for (int j = 0; j < buf.Length; j++)
                {
                    buf[j] = 1;
                }
                buffer.Add(buf);
                Console.WriteLine("Мегабайт загружено в память : " + (buffer.Count));
            }
        }
Добавлено через 19 секунд
Цитата Сообщение от Tessen Посмотреть сообщение
вам clr не выдаст столько памяти чтобы засрать 16гб оперативки
С чего это?

Добавлено через 18 секунд
Цитата Сообщение от nio Посмотреть сообщение
Good1101, не помню где, но мелькала такая инфа, что ОС выделяет на процесс не более 2ГБ ОЗУ. Так сказать "защита от горе-программеров, которые не контролируют свою память"
Только для 32-х битных программ.
2
Вложения
Тип файла: zip app4test.zip (2.0 Кб, 76 просмотров)
60 / 59 / 11
Регистрация: 28.12.2011
Сообщений: 276
23.05.2013, 10:28  [ТС] 7
хм.. а я сделал так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
namespace ozuTest
{
    class Program
    {
        static  List<MyBuffer> buffer = new List<MyBuffer>();
 
        static int bufLast;
        static void Main(string[] args)
        {
            
            if (args.Length > 0)
            {
                bufLast = int.Parse(args[1]);
            }
            while (true)
            {
                    MyBuffer buf = new MyBuffer();
                    buffer.Add(buf);
                    Console.WriteLine("Мегабайт загружено в память : " + (int)((buffer.Count + bufLast) / 120.4));
                    if (buffer.Count / 120.4f > 1200)
                    {
                        Console.WriteLine("error");
                        ProcessNew();
                        Thread.Sleep(1000000000);
                    }
                
            }
        }
        static void ProcessNew()
        {
            Process proc = new Process();
            proc.StartInfo.FileName = "ozuTest.exe";
            proc.StartInfo.Arguments = ("-a " + (buffer.Count + bufLast));
            proc.Start();
        }
    }
 
    class MyBuffer
    {
        byte[] buf = new byte[10240];
        
    }
}
забил в память больше 38гиов ) при том что 4 уже использовались, после чего комп завис почти намертво, и даже после закрытия всех приложений продолжал тупить сильно.
1
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 1
31.07.2016, 12:55 8
Заполняет только 1.6 gb а затем вылетает
На компе 48 gb оперативы.
0
Эксперт .NET
14843 / 11230 / 2947
Регистрация: 17.09.2011
Сообщений: 18,813
31.07.2016, 21:50 9
Цитата Сообщение от M1ham Посмотреть сообщение
Заполняет только 1.6 gb а затем вылетает
На компе 48 gb оперативы.
Не путайте количество оперативы и объем виртуальной памяти — это разные вещи.
Конкретно эта ошибка может вылететь, если в виртуальной памяти, например, недостаточно подряд идущих адресов для выделения под массив определенного размера.

Если говорить предметно, то объем памяти, который может использовать ваше приложение, технически ограничен только количеством свободного места на жестком диске. Оперативная память — это не более, чем оптимизация.
А вот объем виртуальной памяти всегда ограничен: в 32-битных процессах это 2ГБ, в 64-битных по умолчанию 8ТБ.
Но даже в 64-битных процессах может вылететь исключение о нехватки памяти при попытке создать большой массив. Например, если она фрагментирована.
1
Ушел с форума
Эксперт С++
16419 / 7394 / 1185
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
31.07.2016, 22:06 10
Цитата Сообщение от kolorotur Посмотреть сообщение
объем памяти, который может использовать ваше приложение, технически ограничен только количеством свободного места на жестком диске.
Не совсем так. Использование RAM и жесткого диска (подкачка) тоже упирается в
определенные лимиты, больше которых система скушать не может. По ограничениям
технического и лицензионного характера.
0
0 / 0 / 0
Регистрация: 05.09.2018
Сообщений: 3
12.11.2018, 22:01 11
А как программно можно очистить память, которую забил єтой прогой?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2018, 22:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Какую оперативную память выбрать для Ryzen
Помогите с выбором оперативной памяти, Я в замешательстве. Собираю бюджетную сборку на Ryzen Мать...

Не могу найти оперативную память для ноутбука
Добрый день, столкнулся с проблемой, не могу найти оп.память на ноутбук. Стоит 2гб 1333мгц DDR3L,...

Подобрать дополнительную оперативную память для старого ПК
Всем привет. Я хотел бы перейти с X32 на X64 и увеличить оперативную память, но железо у меня...

Как ограничить используемую оперативную память для Дальнобойщиков 2?
Подскажите что написать в бат файл чтоб игра запускалась с обьемомо занимаемой памяти 1Г, в компе...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.