【发布时间】:2017-09-27 08:56:46
【问题描述】:
我正在编写一个 excel 解析 web api,它将结构化文件读入对象(循环函数)。
但我注意到在解析某些文件时内存出现显着峰值,因此会引发 OutOfMemory 异常。 excel 解析引擎需要加载整个文件才能读取其结构。而且我发现消耗大部分内存的不是加载,而是解析(将excel转换为结构化对象)和json http返回(将对象序列化为json)最终杀死了内存。比如一个1M的大文件可以解析成70M的json。
所以我四处搜索,找到了这个 .net Memory Profiler 并试图分析导致这种巨大内存使用的原因。这是我在两次解析同一个文件时捕获的快照。我注意到有巨大的字符串 /Object[] 没有被 GCed。
现在我迷路了。当您处理大量列表和大量字符串时,最佳实践是什么?至于减少内存使用量,我应该从哪里开始研究?处理长时间运行的进程时有哪些最佳实践(添加队列?使用 signalR 通知进程结果?)?
非常感谢一些指导!
【问题讨论】:
标签: memory asp.net-web-api out-of-memory memory-profiling