settimeout第一个参数是字符串为什么会造成内存泄露

 我来答
趣事情
2016-10-27 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
stack在内存中是一块连续的内存块, 可自动分配释放 ,一般用来存放函数的参数值,局部变量的值等(如int a,b 就是自动开辟栈空间)。大家在for循环中可能出现的overflow错误,很多都是由于寻找的值超过stack的最大内存范围引起的,stack的内存大小被控制在1M~2M内,手机上更小。

heap在内存中是不连续的内存块,由程序员自己分配,常用的就是malloc(对应于JAVA/C++中的new)。这个heap是比较灵活的,但是由于他的内存的不连续性,很容易造成产生内存碎片,而且分配的效率比较低下。而String 是个char[],这个东西只有分配在heap上。 而访问heap主要是通过指针间接访问(需要经过3步间接访问,而stack上的最多只需要2步), 在汇编层面上看,是要比存放在stack中的数据多至少1条的汇编指令。如果String越长(1块内存块存放长度255,超过以后会再申请新的内存块。),Heap中的内存块就越不连续,需要指针跳转的就越多,这就造成了效率降低。在手机游戏不停绘制界面的时候,如果不停drawString效率可想而知。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式