wujiang
路人甲
路人甲
  • 注册日期2005-04-18
  • 发帖数4
  • QQ
  • 铜币88枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2662回复:5

请教vb supermap高手关于内存泄漏问题 在线等待

楼主#
更多 发布于:2005-04-18 11:20
<P>我用vb和supermap写的代码如下:
    
    SuperMap1.Layers.RemoveAll
    SuperMap1.disconnect
    SuperMap1.Close</P>

<P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "gdmap"
    SuperMap1.Refresh</P>

<P>或用    Dim objLayers As soLayers
    Set objLayers = SuperMap1.Layers
    SuperMap1.Layers.RemoveAll
    Set objLayers = Nothing
    Set frmgps = Nothing
    SuperMap1.disconnect
    SuperMap1.Close</P>

<P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "gdmap"
    SuperMap1.Refresh</P>

<P>我是多个数据源放在同一个工作空间里,地图是放在子窗体,在子窗体中我先关闭地图,然后再打开另外一个地图,我只做这个操作的情况下,在任务管理器里发现程序内存没有释放,地图切换的越多次,内存泄露的越多,最多时泄露有260多M,请教高手是什么原因?</P>

<P>在线等待,谢谢!
</P>
喜欢0 评分0
zhangming
论坛版主
论坛版主
  • 注册日期2003-07-27
  • 发帖数76
  • QQ
  • 铜币269枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-04-25 15:26
<P>怎样切换地图的?</P><P>贴代码时,请详细说明这些代码写在什么样的事件中等信息,便于给您检查原因。</P>
举报 回复(0) 喜欢(0)     评分
wujiang
路人甲
路人甲
  • 注册日期2005-04-18
  • 发帖数4
  • QQ
  • 铜币88枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-04-25 17:05
<P>我用vb和supermap写,放在菜单里</P><P>如:</P><P>地图(主菜单)</P><P>广州(子菜单)</P><P>深圳(子菜单)   </P><P>我在“广州”菜单CLICK事件中输入以下代码:</P><P>    SuperMap1.Layers.RemoveAll
    SuperMap1.disconnect
    SuperMap1.Close</P><P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "gzmap"
    SuperMap1.Refresh</P><P>在“深圳”菜单CLICK事件中输入以下代码:</P><P>    SuperMap1.Layers.RemoveAll
    SuperMap1.disconnect
    SuperMap1.Close</P><P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "szmap"
    SuperMap1.Refresh</P><P>我是多个数据源放在同一个工作空间里,如广州地图(gzmap)对应的是广州数据源,深圳地图(szmap)对应的是深圳数据源,地图是放在子窗体,在菜单中我点击“广州”,等地图打开后再点击“深圳”,这样反复操作,我只做这种操作的情况下,在任务管理器里发现程序内存没有释放,地图切换的越多次,内存泄露的越多,最多时泄露有260多M,请教高手是什么原因?</P>
举报 回复(0) 喜欢(0)     评分
cloud208
路人甲
路人甲
  • 注册日期2004-10-19
  • 发帖数19
  • QQ
  • 铜币191枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-04-25 19:26
<P>SuperMap中定义的对象,自己不会释放内存,必需手工去做。</P><P>如Set objLayers = SuperMap1.Layers</P><P>最后一定要 set objLayers = nothing</P>
举报 回复(0) 喜欢(0)     评分
wujiang
路人甲
路人甲
  • 注册日期2005-04-18
  • 发帖数4
  • QQ
  • 铜币88枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-04-26 09:44
<P>我在顶楼已说明</P>
<P>或用    Dim objLayers As soLayers
    Set objLayers = SuperMap1.Layers
    SuperMap1.Layers.RemoveAll
    Set objLayers = Nothing
    SuperMap1.disconnect
    SuperMap1.Close</P>
<P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "gzmap"
    SuperMap1.Refresh</P>
<P>还是不行啊</P>
[此贴子已经被作者于2005-4-26 9:55:42编辑过]
举报 回复(0) 喜欢(0)     评分
mimicico
路人甲
路人甲
  • 注册日期2003-10-22
  • 发帖数7
  • QQ
  • 铜币92枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-04-26 15:19
<P>    先Close,再Disconnect,试试看</P><P>    SuperMap1.Layers.RemoveAll
    SuperMap1.Close</P><P>    SuperMap1.disconnect
    </P><P>    SuperMap1.Connect SuperWorkspace1.Handle
    SuperMap1.FilterText = True
    SuperMap1.openmap "gzmap"
    SuperMap1.Refresh</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部