首页 / 浏览问题 / WebGIS / 问题详情
前端加载倾斜摄影图层后,内存满额后其他区域模型加载异常
8EXP 2023年01月30日
为保证显示效果,前端将模型及倾斜摄影图层的clearMemoryImmediately 设置为false。当模块倾斜摄影详细加载后,视角挪动到其他模糊区域,未见重新加载(无新请求发送)。 请问是否是内存超过预设的缓存大小导致的?有什么办法可以在clearMemoryImmediately = false 的情况下释放缓存吗?

1个回答

您好!clearMemoryImmediately 若设置为false,则需要对setCacheSize设置一个值。参考以下代码

            // 设置缓存空间大小,单位MB
            Cesium.MemoryManager.setCacheSize(512);
            // 选择不及时释放内存
            Cesium.when(promise, function (layers) {
                viewer.zoomTo(layers);
                layers[0].forEach((layers) => {
                    layers.clearMemoryImmediately = false;
                })
            })

希望可以帮助到您!

1,427EXP 2023年01月30日
你好,我有设置cacheSize,但是在有倾斜摄影的情况下,缓存大小肯定不能满足全量图层。想问一下,当缓存满额时,会在什么情景下自动释放,并激活重新加载。

我尝试了在倾斜摄影加载清晰后拉远相机,等待后再缩近还是清晰的情景,导致缓存满的情况下,其他部分无法加载。
您使用的Cesium包是什么版本的呢
你好,Cesium包是1.67的
你好,释放内存需要其他设置吗?
这个释放是调度出视野范围后由浏览器控制释放的,在前端暂时没有其他设置。对于缓存满的情况下,其他部分无法加载清晰层的情况应该是之前WebGl包的情况,您使用新的11i的包试一下。如果设置了

S3MTilesLayer.clearMemoryImmediately=false;//不及时释放内存
Cesium.MemoryManager.setCacheSize(4096);//设置缓存空间的大小,单位为MB
浏览器本身有固定上限内存,当设置缓存空间的值小于浏览器本身内存值,内存满额后会自动释放当前场景之外的其它超额部分。当设置缓存空间的值大于浏览器本身内存值,很大概率浏览页面会崩溃,但是如果加载的慢,小于释放的速度,这种情况下就不会崩溃。
好的,谢谢你
...