У меня есть требование, когда мне нужно скопировать данные из таблицы данных в многомерный массив, но когда я объявляю многомерный массив, я получаю ошибку памяти. пожалуйста, предложите решение.Получение «System.OutOfMemoryException» при объявлении многомерного массива
Dim my_array(number, number, number, number, number, number, number, number, number, number, number) As String
где число количество строк, поступающих из базы данных SELECT COUNT(COL.NAME) FROM TABLE_NAME
то есть.
, если я использую:
Dim my_array(number, number, number, number, number, number, number, number, number) As String
нет никакой ошибки.
Вы, вероятно, следует использовать 'Datatable 'вместо многомерного массива. Что касается вашей проблемы: отдельные объекты в .NET <4.5 ограничены размером 2 ГБ. Кажется, у вас много данных для обработки, поэтому он может превысить этот предел. Будьте более конкретными: каковы ваши данные, чего вы пытаетесь достичь? Если вы можете использовать .NET 4.5, обратитесь к этой статье: http://msdn.microsoft.com/en-us/library/hh285054%28v=vs.110%29.aspx – Jens
Простая математика объяснит эту проблему. Если вы ошиблись в предположении, что каждый элемент массива будет потреблять только 1 байт памяти (он не будет), и у вас будет только 10 строк в таблице, объем памяти, необходимый для работы my_array, составляет 10^9 байтов = 1 ГБ памяти , Для того, кто не работает, вам понадобится 10^12 байтов = 1000 ГБ –
@JonathanHouston Я не получаю вашу математику. Если у него 11 массивов с 10 строками, вы получите '11 * 10 = 110 элементов * 1 байт = 110 байтов' (не то, что ваша общая идея слишком большого количества данных в одном массиве не правдоподобна). – Jens