磁盘上的JSON文件在加载到内存中的var时会占用相同的空间吗?

时间:2014-11-11 09:59:14

标签: javascript node.js

我将一些JSON文件存储在磁盘上(每个文件非常小,约为4kB),并在需要时将它们加载到var中。 我可能有数千个这样的文件,如果它们在内存中占用的空间与它们在磁盘上占用的空间相同,我宁愿在应用程序启动时将它们全部加载到内存中。

如何计算文件从中创建对象时占用的内存量(RAM)?

编辑:我知道如何将JSON文件保存到磁盘。那不是我的问题。我试图了解当我将其加载到var中时,JSON文件将占用多少内存(RAM)。 如果我知道磁盘上JSON文件的大小,当我从node.js或web浏览器中的文件创建javascript对象时,如何计算它将占用多少内存(RAM)?

文件保存为"纯文本文件"。 例如:

{"foo": {
    "bar": 1,
    "foo": {
        "bar": [
            "foo",
            "bar"
        ], 
        "foo":[
             "bar",
             "foo"
        ]
     }
    }
}

2 个答案:

答案 0 :(得分:2)

对象占用的RAM量与文件大小不同。文件的大小只是其中的字节数,但对象占用的RAM量取决于存储在其中的值。例如,在像这样的对象中:

{
    "bar": 1
}

保存到文件时,1只是一个字节。但是,如果您要将此对象加载到var1将占用8个字节,因为它是number

请看一下这个答案,了解每种数据类型的大小:https://stackoverflow.com/a/11900218/1611665

另外,你应该考虑密钥的大小(但这非常简单,如果你的密钥是字符串,它是length属性的两倍)。

答案 1 :(得分:1)

我会尝试在您使用的JavaScript执行环境中测量内存消耗。 例如,对于Chrome浏览器,您可以使用此memory profiling guide

您提到的数据文件表明您的代码在服务器上运行,可能是node.js. 我想看看this