仓酷云
标题:
JAVA编程:在IE下的JS编程需注重的内存开释成绩
[打印本页]
作者:
谁可相欹
时间:
2015-1-18 11:06
标题:
JAVA编程:在IE下的JS编程需注重的内存开释成绩
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。在IE下的JS编程中,以下的编程体例城市形成即便封闭IE也没法开释内存的成绩,上面分类给出:
1、给DOM对象增加的属性是一个对象的援用。典范:
varMyObject={};
document.getElementById(myDiv).myProp=MyObject;
办理办法:
在window.onunload事务中写上:document.getElementById(myDiv).myProp=null;
2、DOM对象与JS对象互相援用。典范:
functionEncapsulator(element){
this.elementReference=element;
element.myProp=this;
}
newEncapsulator(document.getElementById(myDiv));
办理办法:
在onunload事务中写上:document.getElementById(myDiv).myProp=null;
3、给DOM对象用attachEvent绑定事务。典范:
functiondoClick(){}
element.attachEvent("onclick",doClick);
办理办法:
在onunload事务中写上:element.detachEvent(onclick,doClick);
4、从外到内实行appendChild。这时候即便挪用removeChild也没法开释。典范:
varparentDiv=document.createElement("div");
varchildDiv=document.createElement("div");
document.body.appendChild(parentDiv);
parentDiv.appendChild(childDiv);
办理办法:
从内到外实行appendChild:
varparentDiv=document.createElement("div");
varchildDiv=document.createElement("div");
parentDiv.appendChild(childDiv);
document.body.appendChild(parentDiv);
5、重复重写统一个属性会形成内存大批占用(但封闭IE后内存会被开释)。典范:
for(i=0;i<5000;i++){
hostElement.text="asdfasdfasdf";
}
这类体例相称于界说了5000个属性!
办理办法:
实在没甚么办理办法:P~~~就是编程的时分只管制止呈现这类情形咯~~
申明:
1、以上材料均来历于微软官方的MSDN站点,链接地点:
http://msdn.microsoft.com/librar...e_leak_patterns.asp
人人能够到下面这个地点中看到具体的申明,包含典范和图例都有。只是我英文不太好,看不太懂,假如我上述有掉误或有必要增补的中央请人人指出。
2、关于第一条,现实上包含element.onclick=funcRef这类写法也算在个中,由于这也是一个对对象的援用。在页面onunload时应当开释失落。
3、关于第三条,在MSDN的英文申明中仿佛是说即便挪用detachEvent也没法开释内存,由于在attachEvent的时分就已形成内存“LEAK”了,不外detachEvent后情形仍是会好一点。不晓得是否是如许,请英文好的亲可以指出。
4、在实践编程中,这些内存成绩的实践影响其实不年夜,特别是给客户利用时,客户对此毫不会有发觉,但是这些成绩关于程序员来讲却一直是个芥蒂---有如许的BUG内心总会以为不恬逸吧?能办理则授与办理,如许是最好的。现实上我在webfx.eae.net如许顶级的JS源码站点中,在它们的源码里城市看到接纳上述办理体例举行内存的开释办理。
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。
作者:
蒙在股里
时间:
2015-1-20 14:40
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者:
不帅
时间:
2015-1-20 14:50
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者:
精灵巫婆
时间:
2015-1-29 10:45
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者:
深爱那片海
时间:
2015-2-1 16:09
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者:
因胸联盟
时间:
2015-2-7 07:48
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者:
再现理想
时间:
2015-2-21 03:23
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
金色的骷髅
时间:
2015-3-6 19:29
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
第二个灵魂
时间:
2015-3-13 06:26
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者:
变相怪杰
时间:
2015-3-20 15:15
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2