`
joshokn
  • 浏览: 103318 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

JavaScript中的内存泄露

阅读更多
不像C语言,内存的管理是由程序员去控制的(析构函数),javascript的内存管理是托管的,系统的垃圾回收机制会帮助程序员作内存的管理,但并不是说这样做就没有内存泄露的危险了,js引擎的垃圾回收机制会将运行环境下所有不能及的变量标明“待回收”标志,等待回收。可是程序中也会存在死链接,试举一个小例子

js 代码
 
  1. /**若girl A永远喜欢Jim,这种情况是有的,而girl B在Jim不喜欢她的情况下就放弃喜欢Jim ,  
  2.  * 我们讨论当girl C出现的时候,Jim放弃喜欢A and B,而去喜欢了C*/  
  3. var Man= function (){  
  4.     this.name="Jim";  
  5.     this.behavior = function (){alert("Jim will not love A and B any more because C is coming...");}  
  6.       
  7. }  
  8.   
  9. var Girl_A=function (){  
  10.     this.name="A";  
  11.     this.boyFriend;  
  12.     this.behavior = function (parameter){  
  13.         this.boyFriend = new Man();  
  14.         alert("Love Jim forever");  
  15.         };  
  16. }  
  17.   
  18. var Girl_B=function (){  
  19.     this.name="B";  
  20.     this.boyFriend;  
  21.     this.behavior = function (parameter){  
  22.         if(parameter){  
  23.             this.boyFriend = new Man();       
  24.             alert("Will not love Jim any more");  
  25.         }  
  26.         else{  
  27.             this.boyFriend=null;  
  28.             alert("Love Jim for he love me");             
  29.         }  
  30.     }  
  31. }  
  32.   
  33. function main(){  
  34.     var man = new Man();  
  35.     man.behavior();  
  36.     var girl_a = new Girl_A();  
  37.     girl_a.behavior();  
  38.     var girl_b = new Girl_B();  
  39.     girl_b.behavior(true);/**表示B由外界因素知道Jim不再喜欢她这件事情是事实*/  
  40.     /**因为girl a and b 已经从这场"Love Battle"中退出了,所以将她们的空间释放掉*/  
  41.     girl_a= null;  
  42.     girl_b = null;  
  43.       
  44. }  

从这段代码看到当A和B均已经释放掉了自己所占有的空间的时候,因为A仍然对Jim持有那份‘love ’(TMD,说的我自己的鸡皮疙瘩都出来了),所以它通过Man这个关联仍然是可达的,所以它的空间仍然被持有,并没有被释放,所以这就造成了内存泄露。
分享到:
评论

相关推荐

    【温故而知新】JavaScript中内存泄露有那几种.md

    【温故而知新】JavaScript中内存泄露有那几种

    javascript内存泄露问题的解析

    JavaScript内存泄露问题的解析 JavaScript内存泄露问题是一种常见的bug,它会导致系统崩溃和性能下降。内存泄露是指系统不能正确地管理内存分配的情况,这可能会导致程序调用失败、执行减慢等问题。 在JavaScript...

    Javascript内存泄露

    ### JavaScript内存泄露详解 #### 一、什么是JavaScript内存泄露? 在JavaScript编程中,内存泄露指的是在浏览器中不再使用的变量或对象占用的内存没有被及时回收,导致可用内存逐渐减少的现象。这种现象通常发生...

    JavaScript避开内存泄露及内存管理技巧_.docx

    在JavaScript开发中,内存泄露是一个常见的问题,它会导致页面崩溃、性能下降和用户体验不良。因此,了解如何避免内存泄露和有效地管理内存是非常重要的。本文将详细讲解JavaScript中的内存泄露问题和解决方案。 一...

    JavaScript_内存泄露

    JavaScript的内存管理是其语言特性中的重要一环,理解并掌握这一机制对于编写高效、无内存泄露的代码至关重要。本文将深入探讨JavaScript的内存机制,特别是如何避免内存泄露。 首先,我们来了解一下JavaScript的...

    JavaScript内存泄漏的处理方式

    在探讨JavaScript内存泄漏的处理方式前,有必要了解内存泄漏的含义。内存泄漏通常指的是程序不再使用的内存未能被释放,导致内存消耗不断上升。即使在高级语言如JavaScript中,这一问题亦可能出现,尽管它拥有垃圾...

    JavaScript中内存泄漏的介绍与教程(推荐)

    本文主要给大家详细介绍了关于JavaScript中内存泄漏的相关内容,文中介绍的非常详细,对大家具有一定的参考学习价值,下面来一起看看详细的介绍: 一、什么是内存泄漏? 程序的运行需要内存。只要程序提出要求,...

    JavaScript中的内存泄漏检测方法研究.pdf

    JavaScript中的内存泄漏检测方法研究 在 JavaScript 中,内存泄漏是一种常见的问题,它会导致应用程序的性能下降和崩溃。检测内存泄漏是一个复杂的任务,需要对内存泄漏的原因和机理进行深入分析。本文研究了十一种...

    测试JavaScript在IE中的内存泄露

    2. **内存泄漏类型**:常见的JavaScript内存泄露包括全局变量、闭包引用、DOM元素引用、事件监听器等。了解这些类型有助于识别潜在问题。 3. **工具使用**:利用如IE Developer Tools(F12工具)、Chrome DevTools...

    Iframe内存泄露分析

    Iframe 内存泄露分析是指在使用 Iframe 时,由于互相引用、闭包、跨页面泄漏、伪泄漏等原因,导致浏览器内存泄漏的问题。这种问题在 Ajax 盛行以前并不是什么大问题,因为都是通过页面跳转和刷新来进行与服务端的...

    javascript 内存泄漏 检测 解决 检测工具 原因分析

    JavaScript内存泄漏是一个重要的编程问题,尤其对于Web应用来说,它可能导致性能下降,用户界面响应变慢,甚至在极端情况下导致应用程序崩溃。理解内存泄漏的原因、如何检测和解决它们是每个JavaScript开发者必备的...

    sIEve-0.0.8-javascript内存泄漏检测工具

    sIEve是一款专门针对JavaScript内存泄漏检测的工具,版本为0.0.8。这款工具的主要目标是帮助开发者识别和定位JavaScript应用中的内存泄漏问题,以优化性能并提高用户体验。sIEve通过深入分析JavaScript运行时的内存...

    javascript 内存泄漏

    在实际中,如果你怀疑浏览器存在内存泄漏,可以考虑Internet Explorer和Mozilla Firefox这两个与JavaScript内存泄漏最常相关的浏览器。了解这些浏览器中组件对象模型如何管理DOM对象,以及内存是如何通过引用计数...

    内存泄漏检测工具

    这是一个专为检测IE浏览器中的JavaScript内存泄漏设计的工具。由于IE浏览器的JavaScript引擎(JScript)与其他现代浏览器(如Chrome的V8引擎)存在差异,它可能存在一些特有的内存泄漏问题。该工具可以帮助开发者...

    【JavaScript源代码】一篇文章弄懂javascript内存泄漏.docx

    【JavaScript源代码】一篇文章弄懂javascript内存泄漏 在JavaScript中,内存管理对于程序性能至关重要,因为内存泄漏会导致程序效率下降,甚至可能导致应用崩溃。本文旨在深入解析JavaScript中的内存泄漏及其解决...

    内存泄露,闭包 内存泄露,闭包 内存泄露,闭包

    在JavaScript中,由于其自动垃圾回收(Garbage Collection, GC)机制,程序员通常不会直接管理内存,但不恰当的编程习惯可能导致内存泄露。例如,全局变量、循环引用和闭包都可能导致内存无法被正确回收。 闭包是...

    webView解决内存泄漏

    6. **避免JavaScript与Android的长时间交互**:如果JavaScript长时间持有对Android对象的引用,也会导致内存泄漏。应使用`WebChromeClient`或`WebViewClient`的适当方法处理JavaScript与Java之间的交互,并确保及时...

    深入浅出JavaScript内存泄漏.doc

    JavaScript内存泄漏是一个重要的主题,尤其是在现代Web开发中,因为页面长时间保持活跃且动态更新内容的情况越来越普遍。了解和处理内存泄漏对于优化Web应用性能至关重要。本文将深入探讨JavaScript中的几种常见内存...

    javascript 数组内存释放

    总之,JavaScript中的数组内存释放依赖于垃圾回收机制,正确地解除引用、避免循环引用、使用弱引用以及及时清理定时器和事件监听器,都是有效管理数组内存的方法。理解这些概念并应用到实践中,有助于编写出更高效、...

Global site tag (gtag.js) - Google Analytics