У меня есть программа, которая обрабатывает большие объемы данных и может кэшировать большую часть ее для повторного использования с последующими записями в памяти. Чем больше я кешу, тем быстрее он работает. Но если я кешу слишком много, бум, начните заново, и это займет намного больше времени!
Я не слишком успешно пытался сделать что-либо после возникновения исключения - я не могу получить достаточно памяти, чтобы что-либо сделать.
Также я попытался выделить огромный объект, а затем отменил его сразу, с несогласованными результатами. Может быть, я делаю что-то не так?
Во всяком случае, то, что я застрял, - это просто установить жестко определенный предел для # кэшированных объектов, которые, по опыту, кажутся достаточно низкими. Любые лучшие идеи? спасибо.
изменить после ответа
Следующий код, похоже, делает именно то, что я хочу:
Loop
Dim memFailPoint As MemoryFailPoint = Nothing
Try
memFailPoint = New MemoryFailPoint( mysize) ''// size of MB of several objects I'm about to add to cache
memFailPoint.Dispose()
Catch ex As InsufficientMemoryException
''// dump the oldest items here
End Try
''// do work
next loop.
Мне нужно проверить, замедляет ли это в этой схеме или нет, но я вижу желтую строку в диспетчере задач, выглядящую как очень здоровый пилообразный паттерн с последовательной вершиной - yay!!