JS中关于对内存的释放问题[待续]

原创 2004年03月02日 10:20:00

JScript uses a mark-and-sweep garbage collector with a variety of heuristics used to determine when to run garbage collection. The JScript garbage collector works like this:

1、When the script engine is shut down, garbage is collected.

2、When 256 variants, or more than 64KB of strings, or more than 4096 array slots have been allocated, the garbage collector sets a flag that says collect soon.

3、Whenever a new statement is executed or the script debugger starts, that flag is checked, and if it is set, a collection is done.

There is an undocumented JScript function called CollectGarbage that forces a garbage collection. This is for testing purposes only—do not ship code that calls this function. It is a poor programming practice to write code in JScript that depends on garbage collections being done at particular times. If you need predictable garbage collection, use a language that supports it (like Visual Basic? or VBScript). Note that all of this is the implementation detail of the engine and should not be relied upon because it may change in the future. Note also that the version of JScript supported by Microsoft? .NET will use the .NET Framework garbage collector, a multigenerational mark-and-sweep collector.
And remember, if you want a deterministic-lifetime app, use a deterministic-lifetime language like C++, Visual Basic 6.0, or VBScript; not an indeterministic-lifetime language like JScript, Scheme, or Java. If you're writing a program that depends on being able to have a deterministic object lifetime, JScript is not the right tool for the job. Trying to make it a deterministic-lifetime language will just create headaches down the road.

js的内存管理类似于java的内存管理!你可以参看java的内存管理机制。

释放一个对象所占的内存必须先释放所有对该对象的引用。

但当对象没有被任何变量应用时,browse也不一定释放该对象所占的内存。

CollectGarbage()并不是推荐的方法。

ie最小化时,会进行垃圾回收!

谈一谈Javascript内存释放那点事

Javascript语言有自己的一套内存回收机制,一般情况下局部变量和对象使用完就会被系统自动回收,无需我们理会。但是碰到闭包的情况这些变量和对象是不会被回收的,对于普通的web站点,页面刷新或跳转这...
  • taoerchun
  • taoerchun
  • 2016年05月22日 23:41
  • 16052

Cocos2d-JS 性能优化

缓存的创建和清除 为了提供性能,Cocos2d-JS提供了几个缓存,分别应用与不同的情况。这些 缓存类有纹理缓存,精灵帧缓存,动画 缓存和着色器缓存。 场景与资源 不同的场景中资源的占用不同,而...
  • AiCoding_D
  • AiCoding_D
  • 2016年05月13日 18:10
  • 2913

js内存泄露的几种情况

想解决内存泄露问题,必须知道什么是内存泄露,什么情况下出现内存泄露,才能在遇到问题时,逐个排除。这里只讨论那些不经意间的内存泄露。 一、什么是内存泄露 内存泄露是指一块被分配的内存既不能使...
  • li2274221
  • li2274221
  • 2014年05月07日 15:18
  • 23750

C语言 free() 内存释放问题

我们知道free(p)是释放掉p所指向的内存,那么是释放了多长的一段内存呢?我们的系统是如何知道要释放多少内存的呢?下面我来讲讲这个问题。 请看下面一段代码...
  • Zzy_ZhangZeyu_
  • Zzy_ZhangZeyu_
  • 2014年05月01日 20:25
  • 1278

内存申请和释放及堆连续

C语言有两种内存申请方式: 1、静态申请:当你声明全局或静态变量的时候,会用到静态申请内存。静态申请的内存有固定的空间大小。空间只在程序开始的时候申请一次,并且不再释放(除非程序结束)。 ...
  • CNHK1225
  • CNHK1225
  • 2016年12月21日 22:54
  • 528

iOS求生之路五(iOS 9.0 AVPlayer的使用与内存的释放问题)

iOS求生之路五(iOS 9.0 AVPlayer的使用与内存的释放问题) 标签: AVPlayerios内存 2015-11-06 16:58 1190人阅读 评论(0) 收藏 举报 ...
  • wakice
  • wakice
  • 2017年03月31日 15:53
  • 1264

vector 避免内存频繁分配释放与手动释放vector内存

1.避免频繁重分配 关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)...
  • cws1214
  • cws1214
  • 2015年08月25日 21:27
  • 4888

python内存不释放原理

在maillist里面看到无数次的有人问,python速度为什么这么慢,python内存管理很差。实话说,我前面已经说过了。如果你在意内存/CPU,不要用python,改用C吧。就算C不行,起码也用个...
  • longzhiwen888
  • longzhiwen888
  • 2015年06月19日 16:18
  • 1073

Android代码内存优化建议-Android官方篇

转自:http://androidperformance.com/ http://developer.android.com/intl/zh-cn/training/displaying-b...
  • Hknock
  • Hknock
  • 2015年08月06日 19:58
  • 15067

频繁分配释放内存导致的性能问题的分析

频繁分配释放内存导致的性能问题的分析 现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约...
  • chenglinhust
  • chenglinhust
  • 2015年10月17日 00:20
  • 881
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS中关于对内存的释放问题[待续]
举报原因:
原因补充:

(最多只允许输入30个字)