powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / net core max memory
25 сообщений из 28, страница 1 из 2
net core max memory
    #39723047
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, сабж работает с огромным кол-вом оперативной памяти? Скажем, смогу я создать в памяти массив общим размером тысяча гигабайт(если они есть в системе)?
...
Рейтинг: 0 / 0
net core max memory
    #39723145
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

Да.
...
Рейтинг: 0 / 0
net core max memory
    #39723220
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

Работать будет, но с какой скоростью будет происходить сборка мусора? Я бы сначала проверил...
...
Рейтинг: 0 / 0
net core max memory
    #39723224
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ бы сначала проверил...ни разу не писал с закрытыми глазами не проверяя).
Думаю try.... Except message мало памяти" все равно будет.
...
Рейтинг: 0 / 0
net core max memory
    #39723229
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.
...
Рейтинг: 0 / 0
net core max memory
    #39723252
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

массив же сразу в LoH уедет, и не будет подвержен сборке

Dima TЕсли не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.

Array.LongLength
...
Рейтинг: 0 / 0
net core max memory
    #39723262
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris Array.LongLength
ИМХО индекс при этом не перестанет быть Int32, т.е. это просто конвертация в Int64.

Вот еще что нашел
https://docs.microsoft.com/en-us/dotnet/api/system.array?view=netframework-4.7.2#remarks Array Class
...
By default, the maximum size of an Array is 2 gigabytes (GB). In a 64-bit environment, you can avoid the size restriction by setting the enabled attribute of the gcAllowVeryLargeObjects configuration element to true in the run-time environment. However, the array will still be limited to a total of 4 billion elements, and to a maximum index of 0X7FEFFFFF in any given dimension (0X7FFFFFC7 for byte arrays and arrays of single-byte structures).
...
Рейтинг: 0 / 0
net core max memory
    #39723379
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

https://adamsitnik.com/Array-Pool/
https://www.infoq.com/articles/Big-Memory-Part-1
https://habr.com/post/149584/

в большинстве случаев, всё это применительно и для net core
...
Рейтинг: 0 / 0
net core max memory
    #39723473
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.
Как максимальное количество элементов в массиве коррелирует с максимальным количеством выделенной памяти?
...
Рейтинг: 0 / 0
net core max memory
    #39723474
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisАлексей К,

массив же сразу в LoH уедет, и не будет подвержен сборке

Dima TЕсли не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.

Array.LongLength
Это для многомерных массивов имеет смысл.
...
Рейтинг: 0 / 0
net core max memory
    #39723515
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВDima TЕсли не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.
Как максимальное количество элементов в массиве коррелирует с максимальным количеством выделенной памяти?
Напрямую. Например: массив byte[] или int[] при всем желании не сможет занять 1000 Гб
...
Рейтинг: 0 / 0
net core max memory
    #39723526
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisАлексей К,

массив же сразу в LoH уедет, и не будет подвержен сборке

Dima TЕсли не путаю - индекс массива имеет тип int, т.е. всего 2 млрд. (2^31) элементов даже в x64. Думаю это ограничение сработает раньше чем 1000 Гб памяти заполнится.

Array.LongLength
на сколько я помню объекты размером больше 32000 байт попадают в LOH но это не значит, то они не будут подвержены сборке, вроде проблема в том, что LoH не высвобождается. То есть увеличившись единожды, будет всегда не меньше текущего размера.
...
Рейтинг: 0 / 0
net core max memory
    #39723602
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕвгенийВпропущено...

Как максимальное количество элементов в массиве коррелирует с максимальным количеством выделенной памяти?
Напрямую. Например: массив byte[] или int[] при всем желании не сможет занять 1000 Гб
ну массив может быть разных структур и форм. В моем случае предполагался byte[,]
...
Рейтинг: 0 / 0
net core max memory
    #39723619
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesPallarisАлексей К,

массив же сразу в LoH уедет, и не будет подвержен сборке

пропущено...


Array.LongLength
на сколько я помню объекты размером больше 32000 байт попадают в LOH но это не значит, то они не будут подвержены сборке, вроде проблема в том, что LoH не высвобождается. То есть увеличившись единожды, будет всегда не меньше текущего размера.
да, она просто не дефрагментируется и не тримится(наверное)
...
Рейтинг: 0 / 0
net core max memory
    #39723621
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

кстати кажется читал что с некоторых пор она дефрагментируется. Думаю с 4.5
...
Рейтинг: 0 / 0
net core max memory
    #39723759
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А у коллекций есть предел?
У них же вроде просто связный список. Предыдущий-Текущий-Следующий
...
Рейтинг: 0 / 0
net core max memory
    #39723797
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2А у коллекций есть предел?
У них же вроде просто связный список. Предыдущий-Текущий-Следующий

У связного списка при большом количестве объектов, конкретно просаживается производительность.
...
Рейтинг: 0 / 0
net core max memory
    #39723862
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Denis.,

кстати кажется читал что с некоторых пор она дефрагментируется. Думаю с 4.5
4.5.1

https://docs.microsoft.com/ru-ru/dotnet/api/system.runtime.gcsettings.largeobjectheapcompactionmode?view=netframework-4.7.2#System_Runtime_GCSettings_LargeObjectHeapCompactionMode
...
Рейтинг: 0 / 0
net core max memory
    #39724404
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
а int[][] или byte[][]?
...
Рейтинг: 0 / 0
net core max memory
    #39724422
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВDima T,
а int[][] или byte[][]?
А ТЗ почитать? Речь про массив, а не массив массивов. Уточненное ТЗ 21716287
Denis.В моем случае предполагался byte[,]
Как понимаю в этом случае ограничение действует. 2 Гб максимум.
Но если можно заменить на byte[][], то ограничение можно обойти.
...
Рейтинг: 0 / 0
net core max memory
    #39724541
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
нет, byte[46500,46500] работает
...
Рейтинг: 0 / 0
net core max memory
    #39724588
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.Dima T,
нет, byte[46500,46500] работает
А так уже не работает
Код: c#
1.
2.
3.
4.
5.
6.
			int size = 46500;
			Console.WriteLine($"test {size}");
			var arr = new byte[size, size];
			for (int i = 0; i < size; i++) {
				for (int j = 0; j < size; j++) arr[i, j] = (byte)i;
			}


System.AccessViolationException при i = 46182 и j = 20648. И цифры эти вот что означают
Код: c#
1.
46182*46500+20648 = 2147483648 = 2^31 = 2 Гб



PS .net core 2.1 MSVS2017
...
Рейтинг: 0 / 0
net core max memory
    #39724594
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для int самое большое число это 2147483647, а 2147483648 это переполнение и трактуется как отрицательное -2147483648.
Указатели в x64 - 64 бита, поэтому адрес элемента arr[46182, 20648] в памяти рассчитывается как начало (адрес arr[0,0]) минус 2147483648, но по этому адресу нет реальной памяти, поэтому происходит исключение.
...
Рейтинг: 0 / 0
net core max memory
    #39724914
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде gcAllowVeryLargeObjects должно помочь?
...
Рейтинг: 0 / 0
net core max memory
    #39724939
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВвроде gcAllowVeryLargeObjects должно помочь?
немного поможет
https://docs.microsoft.com/en-us/dotnet/api/system.array?view=netframework-4.7.2#remarks Array Class
...
By default, the maximum size of an Array is 2 gigabytes (GB). In a 64-bit environment, you can avoid the size restriction by setting the enabled attribute of the gcAllowVeryLargeObjects configuration element to true in the run-time environment. However, the array will still be limited to a total of 4 billion elements, and to a maximum index of 0X7FEFFFFF in any given dimension (0X7FFFFFC7 for byte arrays and arrays of single-byte structures).
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / net core max memory
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]