在磁盘上做一个JSON文件,当加载到内存中的var中时,会占用相同的空间

Does a JSON file on disk, occupy the same amount of space when loaded into a var in memory?

本文关键字:var 内存 中时 空间 磁盘 文件 JSON 一个 加载      更新时间:2023-09-26

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

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

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

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

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

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

{
    "bar": 1
}

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

看看每个数据类型的大小的答案:https://stackoverflow.com/a/11900218/1611665

此外,您应该考虑键的大小(但这很简单,如果键是字符串,它是length属性的两倍)。

我会尝试测量您使用的JavaScript执行环境中的内存消耗。例如,对于chrome浏览器,您可以使用此内存评测指南。

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