1
我刚刚开始研究一个项目(我不是新项目),因为性能优化会将32GB图形数据(节点,边等)加载到内存中并保留在内存中。这是一项长期运行的服务,因此数据意味着在服务的整个生命周期内保留在内存中。当CLR触发Gen 2采集时,会有大量暂停(当然),从而影响性能,而GC则会扫描Gen 2,将所有事件都标记为可访问对象。导致性能问题的GC暂停
我想知道的是,有哪些策略可用于托管应用程序,它们必须将大量数据保存在内存中?什么是防止第二代集合运行的最佳方式 - 曾经?
如果你从未运行第二代,你会泄漏使它成为第二代的物体,但它们不会永远活着。根据你的应用程序的作用,这可能是很多对象。 – delnan
对不起,你是对的。但是有没有可以防止这种长时间停顿的策略?或者使用托管运行时实现这种应用程序是一个坏主意? –
@itadapter谢谢。我不再为那家公司工作,但那是我们最终做的 - 对非托管状态进行编组 - 而且你是对的,它解决了问题。 –