2009-08-13 10 views
0

Ich habe die Rails-Konsole in letzter Zeit ein gutes Stück benutzt und es macht mich neugierig. Befehle wieWie verwendet Schienen Speicher?

>> app.get("/") 
=> 200 
>> app.html_document.to_s 

machen mich neugierig zu wissen, wie funktioniert Rails funktioniert im Speicher. Kann mir jemand erklären, was da drin ist? Welche Objekte werden wann instanziiert und wann werden sie zerstört?

Antwort

0

Nach ein wenig Zeit und viel Lesen, hier ist eine minimale Antwort auf meine eigene Frage, da dies immer noch von einem stetigen Rinnsal von Menschen betrachtet wird. Denken Sie daran, dass ich immer noch neu bei Rails bin und dies ist einfach mein Verständnis davon nach etwa zwei Monaten Arbeit mit ihm.

Was instanziiert wird, wenn dies durch Ihre Umgebungseinstellungen bewirkt wird, da das Laden von Klassen (unter anderem) in Entwicklung und Produktion ziemlich unterschiedlich gehandhabt wird. Die Notwendigste kann sich beim Lesen der Kommentare, die Dateien in config/Umgebungen/

# 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. 

und

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

Abgesehen davon entnommen werden, allgemeine Strömung in allen typischen MVC Diagrammen dargestellt (Dispatcher> Controller > Modell> Controller> Ansicht) und wahr ist, gibt es Tonnen anderer Klassen instanziiert auf dem Weg. Eine erschöpfende Liste wäre genau das, anstrengend.

Für diejenigen, die an den Details interessiert sind (zumindest alle Details, die wichtig sind), aber nicht sicher sind, wohin sie gehen, ist das Buch "The Rails Way" von Obie Fernandez sehr lohnenswert und beschäftigt sich ausführlich damit.

0

Diese Frage ist ein wenig zu kompliziert zu beantworten. Es ist wahrscheinlich eine Tonne los, abhängig davon, wie kompliziert die App ist.

Ruby weist Speicher für Objekte zu, die während des Betriebs erstellt werden müssen. Wenn Objekte den Gültigkeitsbereich verlassen, werden sie als unbenutzt markiert und der Garbage Collector gibt den Speicher frei.

Klassenvariablen und globale Variablen usw. können jedoch verhindern, dass Objekte aus dem Gültigkeitsbereich fallen.

Ich würde mir nicht zu viele Sorgen machen. Wenn Sie in einer Produktionsanwendung Speicherprobleme haben, wechseln Sie einfach zu Ruby Enterprise und viele von ihnen werden auf magische Weise verschwinden. :)

Verwandte Themen