Loading... <!-- wp:image {"id":1775,"sizeSlug":"large"} --> <figure class="wp-block-image size-large"><img src="https://mrgeng.com/usr/uploads/2020/11/out-of-memory-1009x1024.jpg" alt="" class="wp-image-1775" style=""></figure> <!-- /wp:image --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">S3D目前仍然是32位软件,最大可调用内存为4个G,我们二次开发的工具或报表,也是同理,数据量一旦过大,经常会发生爆内存的情况导致无法进行下去。在S3D还没有发布64位版本之前,针对这个问题我们可以从以下几个方面来去做优化(.net开发范畴)。</p> <!-- /wp:paragraph --> <!-- wp:spacer {"height":20} --> <div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div> <!-- /wp:spacer --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">1、控制入口的数据源的数量,通过特定对象类型或属性的方式进行初始化的过滤。</p> <!-- /wp:paragraph --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">2、程序内的嵌套循环是否过多,能否考虑优化逻辑。</p> <!-- /wp:paragraph --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">3、在适当的循环内部添加Abort()方法,进行内存的释放。此方法目前来说是最立竿见影的。但是最好也不要太频繁的使用,如果单次循环的速度很快,可以添加一个计数,当循环到多少次的时候执行一次Abort。</p> <!-- /wp:paragraph --> <!-- wp:image {"id":1764,"sizeSlug":"large"} --> <figure class="wp-block-image size-large"><img src="https://mrgeng.com/usr/uploads/2020/11/TransactionMgr-Abort.jpg" alt="" class="wp-image-1764" style=""></figure> <!-- /wp:image --> <!-- wp:spacer {"height":40} --> <div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div> <!-- /wp:spacer --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">示例代码:</p> <!-- /wp:paragraph --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">需要引入Common.Middle.Services,在类头实例化TransactionManager:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>Imports Ingr.SP3D.Common.Middle.Services Public Class CStart Private TransMgr As New TransactionManager</code></pre> <!-- /wp:code --> <!-- wp:paragraph {"fontSize":"normal"} --> <p class="has-normal-font-size">尽量在大循环内的开始或结尾处添加下面这行代码:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>TransMgr.Abort()</code></pre> <!-- /wp:code --> 最后修改:2025 年 03 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏