I m 创立一个桌面应用程序,其运行可达到几秒。 显然,有必要尽量减少这一行动的时间。 这一行动非常容易地平行(个别的次任务),每个次任务在一只透视线上需要大约50万次。 由于在GC中花费了40-50%的时间,每个子公司要花4-5倍的时间才能有效取消速度。
因此,我需要让理事会减少工作。 我的第一项想法是试图找到哪一类物品收集得最多的是垃圾,但我认识到,尽管我经常记得情况,但我从未像这样寻找过这种方式。 通常看一看蒸.,或看管线之间的差别,但显示的是活着的物体,而不是这些射线之间制造和处置的物体。 因此,这是我的第一个问题:最容易找到哪类建筑和收集的垃圾? 我试图寻找方法点,看看某些建筑商是否经常被可疑,但以数百万计制造的所有物体只是小块建筑。 如果我正确理解情况的话,这些都不应对GC产生影响?
该算法产生了数十万个个人结果点目标。 当然,由于这些是行动的产出,因此这些是 t。 但是,这给我带来了第二个问题:在GC中花费的时间主要取决于物体总数还是主要取决于实际收集的物体的数量? 我是否应该试图限制结果物体的数量,而是使用较少但更大的结果物体?
Edit: I found the time spent in GC by using the VS 2010 concurrency visualizer. Also, in the parallel piece of code most sections of blocked threads were waiting for gc
Edit(以英语发言):我应当澄清,业绩问题在于,执行情况实际上在GC工作站上连续进行。 例如,见该员额所述业绩问题。
我可以不谈一下阻碍我read子的垃圾收集器(我认为我不想让服务器上台,正确吗?) 因此,为了加快这一行动,我需要减少援引GC的次数。 大部分时间被浪费,实际上被其他read所阻断,等待着一个read子去做GC。