闭包是什么? ·了解闭包首先了解js的‘链式作用域’结构,对象可以一级一级的向上查找父对象的变量,所以父对象的变量对子对象可见,反之不成立:所以都可以访问全局变量 ·为了解决函数外部无法访问函数内局部变量的问题,就在父函数中定义一个子函数并让它访问了父函数的局部变量,再通过父函数返回该子函数就实现了调用局部变量的效果: ·而上面中的子函数就是闭包,所以闭包的定义是“能够读取其他函数内部变量的函数”,其实简单理解就是“一个定义在函数中的函数”: 示例 function parent(){ ,b=;…
let a = function(){ var i=0; let b = function(){ i++; alert(i); } return b; } let c = a(); c(); 这段代码有两个特点: 1.函数b嵌套在函数a内部: 2.函数a返回函数b.  这样在执行完var c=a()后,变量c实际上是指向了函数b 当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包. 闭包有什么作用? 闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源, 因为a…
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆.堆是运行时数据区域,所有类实例和数组的内存均从此处分配.非堆是JVM留给自己用的,包含方法区.JVM内部处理或优化所需的内存(如 JIT Compiler,Just-in-time Compiler,即时编译后的代码缓存).每个类结构(如运行时常数池.字段和方法数据)以及方法和构造方法的代码. 简言之,Jav…
什么是垃圾回收机制 使用的是“引用计数”方式进行回收.简单地理解的话,就是每个分配的内存区域都有一个计数器,记录有多少个变量指针指向这片内存.当指向该片内存的指针数量为0,那么该片内存区域就可以被回收. 什么又算垃圾 首先我们需要定义一下“垃圾”的概念, 说简单点是指变量的容器zval还存在,但是又没有任何变量名指向此zval.因此判断是否为垃圾的一个重要标准是有没有变量名指向变量容器zval.. 假设我们有一段PHP代码,使用了一个临时变量$tmp存储了一个字符串,在处理完字符串之后,就不需要…
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概归纳了一下几点: 1.方便我们理解什么样的对象,什么时候,会被系统回收掉 2.有助于我们后面的内存优化 3.了解这一块的知识也能提升自己的知识广度,和同事一起装逼的时候有话题 4.如果有面试的需求的话,了解这一块,也能从容面对考官,对于内存回收能够说出个一二 好了,废话不多说了,我大概按以下这个逻辑…
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概归纳了一下几点: 1.方便我们理解什么样的对象,什么时候,会被系统回收掉 2.有助于我们后面的内存优化 3.了解这一块的知识也能提升自己的知识广度,和同事一起装逼的时候有话题 4.如果有面试的需求的话,了解这一块,也能从容面对考官,对于内存回收能够说出个一二 好了,废话不多说了,我大概按以下这个逻辑…
1.前言 理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序. 在学习GC前,你应该知道一个技术名词:"stop-the-world" ,无论你选择哪种GC算法,"stop-the-world"都会发生."stop-the-world"意味着JVM停止应用程序,而去进行垃圾回收.当"stop-the-world&quo…
1.前言 理解JVM的垃圾回收机制(简称GC)有什么好处呢?作为一名软件开发者,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java程序. 在学习GC前,你应该知道一个技术名词:“stop-the-world” ,无论你选择哪种GC算法,“stop-the-world”都会发生.“stop-the-world”意味着JVM停止应用程序,而去进行垃圾回收.当“stop-the-world”发生时,除了进行垃圾回收的线程,其他所有线程都将停止运行.被中断的…
转自:http://blog.sina.com.cn/s/blog_538b279a0100098d.html 写的相当不错滴...................... 摘  要 Java语言中,内存空间中垃圾回收的工作由垃圾回收器(Garbage Collector,GC)完成,GC可以有效地减少内存泄露发生的概率,但它的启动无规律可循,因此不能完全避免内存泄露.通过分析产生内存泄露的原因,提出了Java编程中的一些注意事项,有效地避免了内存泄露.关键词  Java  内存泄露  垃圾回收器…
function a() { ; function b() { alert(++i); } return b; } var c = a(); c(); 一.闭包的微观世界 如果要更加深入的了解闭包以及函数a和嵌套函数b的关系,我们需要引入另外几个概念:函数的执行环境(excution context).活动对象(call object).作用域(scope).作用域链(scope chain).以函数a从定义到执行的过程为例阐述这几个概念. 1.当定义函数a的时候,js解释器会将函数a的作用域链…