RAM内存耗尽

时间:2011-04-30 21:44:18

标签: ruby memory

我可能需要构建一个可能会变得非常大的哈希表。我想知道哈希表是否适合内存,解决此问题的最佳方法是避免应用程序在内存不足时崩溃。

用例:此哈希表包含一组在for循环中引用的id,需要查询特定单词的id。

2 个答案:

答案 0 :(得分:2)

任何时候你都有动态无法轻易重建的数据,那么你需要做出规定,将它从RAM中取出并放到磁盘上。任何类型的数据存储都可以做到这一点。您可以使用平面文本文件或YAML文件。

如果您需要快速访问,那么您将查看某种类型的数据库,因为读取平面/文本文件并不容易允许随机访问。 SQLLite可以这样做,或者是一个无SQL数据库。

如果您需要允许多个进程访问数据并具有良好的访问限制,和/或将数据存储在一台计算机上并从另一台计算机访问它,那么您将查看某种类型的数据库。那时我会研究MySQL或Postgres。我更喜欢后者,但他们都会工作。

答案 1 :(得分:1)

如果你真的认为哈希会变得如此之大,那么也许你不应该将这些数据存储在ram中的哈希值中。当你的应用程序内存不足时,我认为你不能轻易避免崩溃。我想关键是创建机制以避免大量内存消耗。

我不知道你的情况,但我真的怀疑你描述的哈希表会让合理的计算机耗尽内存。如果您真的这么认为,也许您应该使用键值存储数据库(Redis相当容易学习http://redis.io/)或其他类型的NoSQL数据库。