【发布时间】:2015-10-13 13:12:24
【问题描述】:
我以这样一种方式编写了我的 json 结构,即文件(经过一个月的测量后)存储在磁盘上时仍然只有 100 mb 左右。但是现在的文件大约是 20mb,但我看到我的脚本需要的内存大约是 200/300mb。显然,脚本和编译器需要内存,但是将 json txt 作为实际 json 加载到内存中是否会增加 txt 文件大小的大约 8 倍(使用process.memoryUsage() 测量)?我需要数据不断地留在内存中,因为其他功能需要用户请求数据。我只将它保存到文件中作为备份。但是以这种速度,我的服务器将无法处理该脚本。
谁能证实确实如此?如果是这样,您建议我如何减少内存负载?
【问题讨论】:
-
顺便说一句,我曾经从英雄联盟服务器数据中获取 JSON API 到我的 Java 程序中,它消耗了大量内存(大约 100MB,仅用于几个小文件)。 JSON 对于大数据来说是个坏主意,它对 APIS 和其他东西有好处,但不适合作为存储。无论如何,把东西想象成 Javascript 中的类型化数组。它需要更多地考虑设计,因为您无法调整它们的大小,但在操作时使用更少的内存和 CPU。
-
@Tomáš Zato 我正在做类似的事情。你最终是怎么做到的?您是否使用过某种数据库系统?
-
不,我创建的类只包含我需要的属性,我给了他们一个
fromJson方法,他们在其中加载 JSON 数据,然后我将 JSON 从内存中删除。但请记住,与 Java 内存不同,javascript 内存看起来很像 JSON。但是您可能会检查您是否真的需要所有数据,并且数据库听起来并不那么愚蠢,除非您需要闪电般快速。如果这样做,请购买更多 RAM。 -
我也有同样的问题。你有没有解决过这个问题?为什么内存中的 json 比文件中的 json 大得多?有没有更有效的方法将其存储在内存中?
-
澄清:我在 js 文件中声明“json”,所以我想将其称为“javascript 对象”更正确,它在内存中比在文件中大得多。我假设你也有同样的情况?