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