Jac*_*cko 5 c# garbage-collection memory-management large-object-heap
我的代码中有一个循环,它生成许多byte []数组(每个大约1到2 MB),用数据填充它们,然后丢弃引用.所以,即使参考文献只持有很短的时间,我也可以看到私人工作集的增长.
现在,如果我尝试在循环之后分配一个大型数组(~400 MB),我是否可以获得内存不足异常?或者分配会强制GC收集瞬态数据?
谢谢!
生成许多 1-2MB 的数组不是一个好主意。即使您避免内存不足的情况,性能也会受到影响。在大对象堆上分配许多短命对象是当前 GC 不能很好处理的分配模式。
我强烈建议尽可能回收它们。实现一个池,一旦不再需要数组,就可以将它们扔到其中。然后在分配时首先检查是否可以满足池中的请求。这种模式给我的一个程序带来了巨大的性能优势。
我认为内存已满会强制执行 GC,但如果大约在同一时间发生非托管分配,您仍然可能会遇到 OOM。
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |