阅读:2887回复:5
请教vb supermap高手关于内存泄漏问题 在线等待我用vb和supermap写的代码如下: SuperMap1.Layers.RemoveAll SuperMap1.disconnect SuperMap1.Close SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "gdmap" SuperMap1.Refresh 或用 Dim objLayers As soLayers Set objLayers = SuperMap1.Layers SuperMap1.Layers.RemoveAll Set objLayers = Nothing Set frmgps = Nothing SuperMap1.disconnect SuperMap1.Close SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "gdmap" SuperMap1.Refresh 我是多个数据源放在同一个工作空间里,地图是放在子窗体,在子窗体中我先关闭地图,然后再打开另外一个地图,我只做这个操作的情况下,在任务管理器里发现程序内存没有释放,地图切换的越多次,内存泄露的越多,最多时泄露有260多M,请教高手是什么原因? 在线等待,谢谢! |
|
1楼#
发布于:2005-04-25 15:26
怎样切换地图的? 贴代码时,请详细说明这些代码写在什么样的事件中等信息,便于给您检查原因。 |
|
2楼#
发布于:2005-04-25 17:05
我用vb和supermap写,放在菜单里 如: 地图(主菜单) 广州(子菜单) 深圳(子菜单) 我在“广州”菜单CLICK事件中输入以下代码: SuperMap1.Layers.RemoveAll SuperMap1.disconnect SuperMap1.Close SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "gzmap" SuperMap1.Refresh 在“深圳”菜单CLICK事件中输入以下代码: SuperMap1.Layers.RemoveAll SuperMap1.disconnect SuperMap1.Close SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "szmap" SuperMap1.Refresh 我是多个数据源放在同一个工作空间里,如广州地图(gzmap)对应的是广州数据源,深圳地图(szmap)对应的是深圳数据源,地图是放在子窗体,在菜单中我点击“广州”,等地图打开后再点击“深圳”,这样反复操作,我只做这种操作的情况下,在任务管理器里发现程序内存没有释放,地图切换的越多次,内存泄露的越多,最多时泄露有260多M,请教高手是什么原因? |
|
3楼#
发布于:2005-04-25 19:26
SuperMap中定义的对象,自己不会释放内存,必需手工去做。 如Set objLayers = SuperMap1.Layers 最后一定要 set objLayers = nothing |
|
4楼#
发布于:2005-04-26 09:44
我在顶楼已说明 或用 Dim objLayers As soLayers Set objLayers = SuperMap1.Layers SuperMap1.Layers.RemoveAll Set objLayers = Nothing SuperMap1.disconnect SuperMap1.Close SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "gzmap" SuperMap1.Refresh 还是不行啊 [此贴子已经被作者于2005-4-26 9:55:42编辑过] |
|
5楼#
发布于:2005-04-26 15:19
先Close,再Disconnect,试试看 SuperMap1.Layers.RemoveAll SuperMap1.Close SuperMap1.disconnect SuperMap1.Connect SuperWorkspace1.Handle SuperMap1.FilterText = True SuperMap1.openmap "gzmap" SuperMap1.Refresh |
|