程序(有很多对象)很慢, 经测试, 结果, GC消耗了大部分的时间.加上这些 config 后, 性能从 90秒,缩短到39秒 <runtime>
<gcAllowVeryLargeObjects enabled="true" />
<Thread_UseAllCpuGroups enabled="true"/>
<GCCpuGroup enabled="true"/>
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
</runtime>
上部分,90 秒多,默认 config
下部分,39 秒完成,修改一些runtime设置
.exe程序没变化,只是修过.config
<gcAllowVeryLargeObjects enabled="true" />
<Thread_UseAllCpuGroups enabled="true"/>
<GCCpuGroup enabled="true"/>
<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>
</runtime>
上部分,90 秒多,默认 config
下部分,39 秒完成,修改一些runtime设置
.exe程序没变化,只是修过.config
解决方案 »
- winform 无边框 Mdi容器 如何缩放Form?
- SaveFileDialog操作只读属性的txt
- Bookmarks没有get_Item方法
- C#如何修改图片大小?
- 急急!初学oracle!!---求救大侠们--这个sqlserver行列转换函数在oracle中怎么写!!!!!!!!!
- 关注AOP
- 求两个正则表达式
- 菜鸟问题:用C#写Windows程序,向数据库插入数据和显示数据的代码是什么?
- c#调试的时候遇到异常,怎么才能忽略它,继续运行呢?
- 高分求救:在C#.net创建Excel以后,如何释放资源
- C# udp文件传输问题?
- 各种不同的数据库数据,查询出来,上传到服务器,服务器得到数据后,再插入到自己的表里,跪求解决方案!
感谢版主推荐.
这个实际设置Runtime 配置的时候.得看具体情况而定.
比如, 单个对象的大小? 对象的寿命(多久引用归零)? 对象的数量? 分配的密集程度(慢慢分配,短时大量分配)?我这个例子是, 有大量的对象生灭, 多线程,从 25个 x 80MB 的文本,大量的string.split.
最终转换,计算,产生 6,000,000 多个自定义Class.
debug->performance analysis后,发现 GC耗时太多.一改设置,95秒变成39秒
MSDN杂志,有很多讲GC的,更多的 针对GC特性,进行数据结构的优化.
http://msdn.microsoft.com/en-us/magazine/default.aspx
不过我更想知道如何通过代码方式来指定,因为配置文件不方便让用户自己去修改。
有get;set;
Batch/Interactive/LowLatency /SustainedLowLatency
应该就差不多了
根据不同的需求, 选择几种不同的内存策略而已.
作为普通客户端, 一般就是随即释放的多, 以节省更多的内存空间.
作为服务器, 自然内部会采用较好的内存策略, 在释放的时候不会立刻释放, 而是等待重用, 并且应该会根据重用的频率来优化, 这个就是C#带有的功能, JAVA不知道是否有这些偏向性编译的选项呢...