angularjs 在JavaScript中是否有字符串池的概念?我们是否可以让值/键只引用一个字符串对象?

dz6r00yl  于 11个月前  发布在  Angular
关注(0)|答案(2)|浏览(120)

我有一个大的jsonMap,大约有100万个对象,每个对象有大约200个键值对。
正如你所看到的,这里的键是重复的,每个键意味着一个新的String对象。有没有其他方法可以让所有重复的键都指向同一个String对象,以减少map的内存大小。根据上述统计数据,浏览器的内存将超过1Gb。

yx2lnoni

yx2lnoni1#

正如你所看到的,这里的键是重复的,每个键意味着一个新的String对象。
好吧,不,它们每个都得到一个字符串 primitive。虽然有细微的区别,但JavaScript两者都有:

var sp = "primitive";
var so = new String("object");

字符串
在JavaScript中有字符串池的概念吗?
不是指您可以有意调用的任何外部内容,例如Java的intern
一个给定的JavaScript引擎(V8,SpiderMonkey等)可能会也可能不会在封面下重用字符串原语作为优化;它可以,因为字符串在JavaScript中是不可变的,但是它是否曾经成为开发优先级列表的顶部。

7lrncoxx

7lrncoxx2#

JavaScript的工作原理与Java类似。它也有一个字符串池。当有两个相等的字符串时,只分配一个内存槽。没有新的对象被创建。这被称为Interning。
How JavaScript stores strings

相关问题