我正在尝试解决一些内存使用问题。总的来说,我的应用程序收集了一些数据值并使用 C1 WPF 图表和数据网格将它们可视化,最终将所有内容放入 PDF 报告中。
使用 YourKit 分析我的进程我面临的情况是,CLR 堆大小约为 120MB(这很好),而进程内存大小约为 580MB。这几乎是我的实际 CLR 堆大小的内存消耗的 5 倍。我的 CLR 峰值大小为 220MB,而进程内存分配为 710MB。
我很清楚我的对象堆、堆栈等需要一些开销。在 Java JVM 中,我习惯的典型因素约为 1.5 倍。
如何解释这种过多的内存开销?这些进程是否只是分配空闲的备用堆空间?如果是,这是否解释了 710MB 与 220MB?