当我运行一个 ruby 程序时,我假设变量存储在 RAM 中。除了由于缺少 RAM 而需要分页时,它们是否会存储在硬盘上?我认为堆栈和堆是相关的,我找不到任何关于 ruby 存储变量的确切信息。
问问题
135 次
3 回答
0
简短的回答是希望不是。但很长的答案是,是的,在某些时候如果机器内存不足,Ruby 的变量将不得不进入磁盘。
但是,要回答您的确切问题:不,Ruby 本身从不将变量放入硬盘驱动器(据我所知),但在某些时候操作系统会释放 Ruby 的内存并将其发送到磁盘。
更有趣的是,您可以将 ruby 变量存储在磁盘上的 YAML 文件(另一种标记语言)中,.yml
. 因此,如果您尝试使用 Ruby 将复杂对象存储在数据库中,则可以使用文本列,然后将其合成以实例化为给定类的新对象。
于 2013-11-13T05:43:48.547 回答
0
这个答案是指标准的 MRI/YARV Ruby 实现。
与任何其他进程一样,运行中的 Ruby 程序的内存由操作系统控制。如果某些其他进程需要更多内存,操作系统将尝试找到它。如果没有空闲 RAM,操作系统可能需要在硬盘驱动器上临时存储或分页另一个进程(可能是您的 Ruby 程序)的 RAM。当您的程序再次运行时,它将恢复到 RAM。
重要的是要注意这完全由操作系统控制——Ruby 永远不会真正知道它的内存是否被分页。
于 2013-11-13T07:55:03.087 回答