我创建了一个dotnet核心应用程序。该应用程序可在MacOS和Linux上运行。我想监视应用程序的内存使用情况。因此,我一直在执行多次迭代的代码,并在每次迭代结束时检查Process.GetCurrentProcess()。WorkingSet64。该代码仅涉及一些List数据结构,这些数据结构在处理结束时设置为null,以通知GC该对象可用于垃圾回收。对于C DLL也有pinvoke函数调用,但是C代码不会执行任何malloc分配。
我观察到工作集大小值在每次迭代后都会增加。甚至RSS常驻程序集的大小也增加了。我在代码中看不到任何内存泄漏的可能性。即使我显式调用GC.Collect(),该值在每次迭代中仍会增加。任何人都可以提出这种行为的可能原因。