flash as3 Texture IndexBuffer3D 泄漏

texture如果upload之后不dispose,只是texture=null会有泄漏(内存、显存都有)


1.首先,根据API,texture最大上限是350M


2.个人PC测试数据:

代码:

private function render_2():void
		{
			var arr:Array = new Array();
			
			try {
				for (var i:int = 0; i < 21; ++i) {
					bitmapData = new BitmapData(2048, 2048);
					var tex:Texture = content.createTexture(2048, 2048, Context3DTextureFormat.BGRA, true);
					tex.uploadFromBitmapData(bitmapData);
					//					bitmapData.dispose();
					bitmapData = null;
					weakDic[tex] = 1;
					arr.push(tex);
				}	
			} catch (e:Error) {
				trace(e);
				trace(arr.length);
				fscommand("quit");
			}
			
			arr.length = 0;
			
			trace(getDicLen(weakDic));
		}
		
		public function main:void
		{
			render_2();
		}


(1)如果只是createTexture(...),而不upload,虽然不能超过上限,但是不会占用显存,

(2)只有upload之后,才会占用显存,而且还会占用内存(至于为什么占用内存,这个暂时不知道为什么。。望大神告知,O(∩_∩)O谢谢~

(3)上述代码测试中:创建了占用显存336M的texture,虽然是临时对象,但是显存实际上增加了226M,内存增加了200M,且一直存在,等了好久都没有降下去

(4)所以texture不dispose一定会有明显泄漏


再说IndexBuffer3D,与texture同样的测试,内存和显存居然都没有涨,但是不知道为什么,望大神告知~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值