rails如何使用内存?

时间:2009-08-13 03:07:31

标签: ruby-on-rails

我最近一直在使用Rails控制台,它让我很好奇。像

这样的命令
>> app.get("/")
=> 200
>> app.html_document.to_s

让我好奇Rails如何在内存中运行。谁能解释那里发生了什么?什么对象在被销毁的时间和时间被实例化?

3 个答案:

答案 0 :(得分:0)

这个问题有点过于复杂而无法回答。可能会有很多,取决于应用程序的复杂程度。

Ruby为需要动态创建的对象分配内存。当对象超出范围时,它们被标记为未使用,垃圾收集器释放内存。

但是,类变量和全局变量等可以防止对象超出范围。

我不会太担心。如果您在生产应用程序中遇到内存问题,只需切换到Ruby Enterprise,其中许多将神奇地消失。 :)

答案 1 :(得分:0)

更一般地说,几年前_why写了一个excellent piece on Ruby memory management /垃圾收集器。

答案 2 :(得分:0)

经过一段时间和大量的阅读后,这里是对我自己的问题的最小答案,因为这仍然是一个人的稳定涓涓细流。请记住,我还是Rails的新手,这只是我在使用它约两个月后对它的理解。

受环境设置影响时实例化的内容因为类加载(以及其他内容)在开发与生产中的处理方式完全不同。通过阅读config / environments /

中的文件注释,可以收集最基本的内容
# In the development environment your application's code is reloaded on
# every request.  This slows down response time but is perfect for development
# since you don't have to restart the webserver when you make code changes.

# The production environment is meant for finished, "live" apps.
# Code is not reloaded between requests

除此之外,在所有典型的MVC图(调度员>控制器>模型>控制器>视图)中示出了一般流程,并且在真实的情况下,沿途实例化了大量的其他类。一个详尽的清单就是这样,令人筋疲力尽。

对于那些对细节感兴趣的人(至少所有重要的细节)但不知道该去哪里,Obie Fernandez的“The Rails Way”这本书非常值得,而且相当广泛。