Всем привет.
Столкнулся с проблемой нехватки памяти и решил, что я умнее всех и пытался очистить ее следующим образом: Set oResponse = Nothing. Но это не работает, оперативная память не освобождается, пока не произойдет выход из цикла. Пример кода:
Иногда json-ответ, преобразованный в структуру для VBA может занимать 400 и более Мб памяти, также количество запросов варьируется. Были случаи, когда суммарно Excel начинал "поедать" 8 Гб памяти, что может быть страшным для некоторых ПК. Строкой Set oResponse = Nothing я думал память, выделенная под json-ответ, высвобождается, но это не так. Она высвобождается автоматически, когда происходит выход из цикла, а хотелось бы поддерживать эти ~400 Мб занятой памяти на протяжении работы всего цикла. Это как-то возможно сделать?
Ну и на самом деле я все равно не верил, что это поможет, ведь каждую итерацию в oResponse присваивается ссылка на другой объект, что, по идее, должно уничтожать объект по предыдущей ссылке.
Столкнулся с проблемой нехватки памяти и решил, что я умнее всех и пытался очистить ее следующим образом: Set oResponse = Nothing. Но это не работает, оперативная память не освобождается, пока не произойдет выход из цикла. Пример кода:
Код |
---|
Dim oRequestList As Collection Dim oRequest As ServerXMLHTTP60 Dim oResponse as Object 'создание асинхронных http-запросов и добавление их в oRequestList For Each oRequest In oRequestList oRequest.waitForResponse Set oResponse = JsonConverter.ParseJson(oRequest.responseText) 'обработка json ответа Set oResponse = Nothing Next oRequest |
Ну и на самом деле я все равно не верил, что это поможет, ведь каждую итерацию в oResponse присваивается ссылка на другой объект, что, по идее, должно уничтожать объект по предыдущей ссылке.