查看: 2569|回复: 4

使用osgdem生成大数量地形(70G)过程中中断

[复制链接]

该用户从未签到

发表于 2009-6-30 10:06:11 | 显示全部楼层 |阅读模式
使用osgdem生成大数量地形(70G)过程中中断,生成到L6级就不生成了。

日志信息中显示,在WriteRow函数写数据的过程运行到“readimage”处就没有信息了,而这句提示的下面就有new出一块内存的代码,我怀疑是否是new的时候出的问题。

请问各位高手可否通过修改代码来解决这样的问题。

[ 本帖最后由 xiaofeii 于 2009-6-30 10:07 编辑 ]

该用户从未签到

发表于 2009-6-30 11:46:04 | 显示全部楼层
可能和反复加载卸载影像造成的内存碎片有关,一个行之有效的改善方法是使用内存池(Memory Pool)。不过osgdem目前还没有这样的解决方案(我的单位有,但是不能公开)。不过因为可以用subtile生成任意块的地形,所以这倒也不是什么大问题

该用户从未签到

发表于 2009-6-30 17:59:22 | 显示全部楼层
或者你可以针对高程和影像数据进行分块,,,然后再处理~~~~~

该用户从未签到

 楼主| 发表于 2009-6-30 17:59:43 | 显示全部楼层
谢谢array指导
我在WriteRow()函数中跟踪了很久,发现new和delete配对,没有问题;然后又把在堆上申请的内存都改在栈上申请,结果WriteRow()函数没有问题了,但在别的函数里面执行的new死掉了。
后来才发现在生成地形过程中,内存已经到达了2GB,我想应该是地址空间不够造成的。就把系统改成支持3GB,结果osgdem就能生成70GB的数据了。

该用户从未签到

 楼主| 发表于 2009-6-30 18:02:18 | 显示全部楼层

回复 3楼 的帖子

我开始也是想分块的方法来解决这样的问题的,但是分块一次需要太长时间了(在erdas里面超过六七个小时),所以后来就想直接用3GB试试,结果这样也是可行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表