arcengine 开发几个注意释放内存的地方
来源:互联网 发布:win10下载哪个java jdk 编辑:程序博客网 时间:2024/04/30 00:31
在循环、查询过程中经常出现如下错误:
1 、循环的 游标一定要释放不然会报错。
private void find_allroads_lxbm(IFeature feature_ld, string lxbm) { try { ISpatialFilter spatialfilter = new SpatialFilterClass(); spatialfilter.WhereClause = "[LXBM] = " + lxbm; spatialfilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; //feature_ld该路段 feature_last下一路段 while (feature_ld != null) { IPolyline polyline = feature_ld.Shape as IPolyline; //缓冲 IPoint end_pt = polyline.ToPoint; ITopologicalOperator topo2 = end_pt as ITopologicalOperator; IGeometry geo_buffer_end = topo2.Buffer(1); spatialfilter.Geometry = geo_buffer_end; IFeatureCursor featcursor_lastld = m_featcls.Search(spatialfilter, true); IFeature feature_last = featcursor_lastld.NextFeature(); try { while (feature_last != null) { /****省略***/ } } catch (Exception exx) { MessageBox.Show(exx.ToString()); } //下一个 feature_ld = feature_last; System.Runtime.InteropServices.Marshal.ReleaseComObject(featcursor_lastld); } System.Runtime.InteropServices.Marshal.ReleaseComObject(spatialfilter); ////垃圾回收 System.GC.Collect(); System.GC.WaitForPendingFinalizers(); } catch (Exception exx) { MessageBox.Show(exx.ToString()); } }
2 关于查询(ISpatialFilter,IQueryFilter):
//该路线编码路段数量 IQueryFilter queryfilterall = new QueryFilterClass(); queryfilterall.WhereClause = " [LXBM]= "+ lxbm; LDBM_MAXCOUNT = m_featcls.FeatureCount(queryfilterall); //起始值 start_index = Convert.ToInt32(start_lxh); IQueryFilter queryfilter = new QueryFilterClass(); queryfilter.WhereClause = " [LDBM]= "+ start_ldbm; IFeatureCursor featcursor = m_featcls.Search(queryfilter, true);//最好是true
参考:http://www.cnblogs.com/gisoracle/archive/2012/01/28/2330541.html
为true分析:pFeatures集合存储了指向FeatureClass上所有Feature的引用,但是由于Recycling参数设置为TRUE也就是说每执行一个NextFeautre方法上一条记录的Feature值在内存中被回收,所以到最后遍历pFeatures集合的时候所有的IFeature引用指向的Feature对象都为Null。
未false分析:分析:pFeatures集合存储了指向FeatureClass上所有Feature的引用,但是由于Recycling参数设置为False也就是说每执行一个NextFeautre方法上一条记录的Feature值在内存中依然存在,所以到最后遍历pFeatures集合的时候所有的IFeature引用指向的Feature对象都依然存在。所以会执行的很Happy(如下图所示):
0 0
- arcengine 开发几个注意释放内存的地方
- flex中关于内存释放几个注意的地方(zz)
- IOCP应用中,有关内存释放的几个需要注意的地方
- 注意内存泄漏的几个地方
- ArcEngine开发中内存不能释放浅析
- ArcEngine开发中内存不能释放
- [ArcEngine] 释放内存方法
- 开发COM+组件需要注意的几个地方
- VS2008开发MOSS工作流几个需要注意的地方
- cocos2d-x 内存释放的机制和使用要注意的地方
- cocos2d-x 内存释放的机制和使用要注意的地方
- android 开发中需要注意内存泄露的地方
- 用OPC Client开发时,需要从如下几个地方注意内存泄露
- 内存处理注意的地方
- JS的几个值得注意的地方
- 今后要着力注意的几个地方
- 使用XML值得注意的几个地方
- 选购显卡要注意的几个地方
- (5)Kurento之系统搭建III-运行环境/工具
- window7电脑如何设置虚拟内存
- SQL Server与MySQL中的MD5与SHA1
- 洛谷1177【模板】快速排序
- Ubuntu16.04+opencv-2.4.13
- arcengine 开发几个注意释放内存的地方
- linux配置静态ip,设置跨网段ping通(联网)
- 【POJ2589】Snap(模拟)
- 非技术人也许不知道,这七大开源软件撑起了互联网
- mysql查询表中某个字段包含有中文的行
- 唐巧总结的40个国人iOS技术博客
- 极大极小搜索
- 假期小目标,以及大学半年来的经历
- 网络基础知识1:集线器,网桥,交换机