n a*_*n a 6 javascript string garbage-collection
以下代码行是否创建了一个对象(如JavaScript String对象或JavaScript Number对象)来组合字符串原语和数字?
var scouterSays = "powerlvl" + 9001;
Run Code Online (Sandbox Code Playgroud)
我正在用JavaScript编写游戏引擎,并且我正在努力对垃圾收集非常小心.我已经阅读了http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript和http://buildnewgames.com/garbage-collector-friendly-code /这是非常有帮助的.我已经实现了对象池并且尽可能避免了数组操作以支持链表.
现在,如果我理解正确,如果我在原始字符串上调用字符串方法,将创建一个字符串对象并替换我的原始字符串.示例是length,substring,indexOf等.由于我使用字符串来识别带有对象池的对象类型,因此我担心每次从池中提取对象时都会创建垃圾.
简而言之,以下是否会导致创建对象(如JavaScript String对象或JavaScript Number对象)?
var byteSize = 4;
var objectType = "msg" + byteSize; //does this create a JS String/Number object?
var message = gameengine.pool.acquire(objectType);
Run Code Online (Sandbox Code Playgroud)
另外,一个相关的问题,将使用按位运算(如~~()或<<或>>)也会导致创建一个JavaScript对象?
Pan*_*lov -1
我对 JavaScript GC 的信任度为零,这是我远离这种语言的基本原因。无论如何,我尝试回复的是:
var x = 1;
alert(typeof x); //number
var n = new Number(1);
alert(typeof n); //object
var scouterSays = "powerlvl" + 9001;
alert(typeof scouterSays); //string
var txt = new String("string");
alert(typeof txt); //object
var test1 = new Boolean(true);
var test2 = String(test1); //convert object to string
alert(typeof test2); //string
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
714 次 |
| 最近记录: |