Я только начал работать над проектом (я новый, а не проект), который в качестве оптимизации производительности загружает 32 ГБ данных графа (узлы, ребра и т. Д.) В память и сохраняет их там. Это длинная служба, поэтому данные должны оставаться в памяти на протяжении всей службы службы. Когда коллекция Gen 2 запускается CLR, есть большие паузы (конечно), которые ухудшают производительность, в то время как GC сканирует Gen 2, отмечая все как достижимые объекты.GC-паузы, вызывающие проблемы с производительностью
Что я хотел бы знать, существуют ли стратегии для управляемых приложений, которые должны хранить большие объемы данных в памяти? Каковы наилучшие способы предотвратить запуск коллекций Gen 2?
Если вы * никогда не запустили Gen 2, вы бы пропустили объекты, которые превращают его в Gen 2, но не * сохраняются в живых навсегда. В зависимости от того, что делает ваше приложение, это может быть много объектов. – delnan
Извините, вы правы. Но существуют ли стратегии, которые могли бы предотвратить такие длительные паузы? Или это просто плохая идея для реализации такого приложения с использованием управляемой среды выполнения? –
@itadapter спасибо. Я больше не работаю для этой компании, но это очень важно, что мы закончили делать - маршаллинг в неуправляемом состоянии - и вы правы, он решил проблему. –