FineUI 官方论坛

标题: 关于FState导致服务器内存暴涨的问题。 [打印本页]

作者: zzzzzzzzzzzzzzz    时间: 2017-5-29 02:04
标题: 关于FState导致服务器内存暴涨的问题。
现在组织机构一次加载500多条。点击左边的组织机构树,会根据选中的节点查询节点下的组织机构显示在右边的表格里。
[attach]10186[/attach]
点击一下查询,大概会上升15M~30M不等的内存占用量,并且一直不会下降。
用了一会,内存就使用到1G左右了。并且继续使用还是会继续上升。
[attach]10187[/attach]

基于以上的情况,本来以为是查询设计的有问题,但使用Repeart绑定后,并没有产生内存暴增的情况。
于是确定大概是Grid控件的问题。

跟踪了FState后,发现FState回传了很大的数据。[attach]10188[/attach]
大约2M左右的回传数据。

暂时只能考虑是FState影响了内存用量。
请各位大神帮忙,内存消耗的太厉害了,50个人使用系统。1个小时左右,就耗费了3G的内存, 然后强制回收了。这个完全扛不住。



作者: sanshi    时间: 2017-5-29 10:52
FState不会导致内存暴增,你用的开源版,可以查看源代码对 FState 的处理。

页面回发时,回发的数据是用来在后台重建树控件,这样你才能在C#代码中通过Tree1.Nodes获取树节点的数据,回发数据量大是因为你的树控件数据多。而FState只是用来在C#中捕获这些数据,并在一个HTTP结束后自动清除。

如果你查看源代码,可以发现 FState 是控件的一个变量而已,一次HTTP执行结束后,页面对象清空了,页面上的所有控件对象也清空了,当然 FState 也就清空了。[attach]10189[/attach]



为了排除你的数据库查询的影响,我建议你使用空项目重现问题(所有数据在内存中硬编码),并上传完整可运行项目,方便分析问题

作者: zzzzzzzzzzzzzzz    时间: 2017-5-29 11:45
sanshi 发表于 2017-5-29 10:52
FState不会导致内存暴增,你用的开源版,可以查看源代码对 FState 的处理。

页面回发时,回发的数据是用来 ...

谢谢三石老大回复。我再找一下问题。
不过现在的现象的确是,只要有加载组织机构树的页面,内存就会涨的很快。
我再去找一下问题。
作者: zzzzzzzzzzzzzzz    时间: 2017-5-29 12:36
最终问题定性了,是MEF成员使用了静态变量所导致的问题。
所有资源都挂在静态变量上了。[attach]10190[/attach]
大家使用MEF如果有更好的心得和加载方式,可以指点小弟一下。
谢谢。
并且谢谢三石大大的回复。






欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4