2015-10-27 37 views
2

編程我很不成熟,我甚至不知道這個問題本身是否正確。我將在此解釋我的意思。編譯器如何區分從不同實例創建的相同變量

  • 用戶1登錄網站。因此,所有對象和其他對象都是針對寫入的程序代碼運行的。
  • 現在用戶2同時登錄網站說,所以這些代碼再次平行於用戶1腳本運行。所以這些代碼必須包含幾乎相同的varibales與用戶1在codes.right?

PHP,Python,Java如何區分這些相同的變量在內存中同時運行? 你不能在內存中同時使用不同值的相同變量嗎?

+0

通常,在運行時有這些對象的單獨實例。在Web應用程序的上下文中,您可以將某個事件的實例綁定到會話本身。 – jgitter

回答

1

Nope ...運行時通常將這些變量存儲在完全獨立的變量表,名稱空間,向變量名稱中添加自定義標識符等,如果它正在單個運行時環境中處理多個用戶。在web服務器的情況下,訪問站點(即連接)的每個人通常是一個完全獨立的運行時實例,它有自己的內存佔用空間......這就像運行同一程序的多個副本一樣。如果你打開兩個Word文檔,輸入一個不會改變另一個,是嗎?同樣的原則在這裏也是如此......

+0

Thanks for answering.I有點聽說關於實例化的每個變量名稱的自定義標識符從google.Variable表是一種新的信息無論如何,我會從谷歌現在學習它。這是所有langauges相同的方式嗎? –

+0

(太廣)問題是關於Java,PHP和Python的。您應該限定您的答案(關於單獨的運行時實例),因爲它對於Java沒有任何意義。同樣不清楚「將自定義標識符添加到變量名稱」的含義。對於每個併發用戶?你能舉一個具體的例子嗎? –

+0

這個問題非常廣泛,所以我給出了非常廣泛的迴應......例如,雖然他沒有特別提出這個問題,但在C++中,編譯器級別的變量添加了附加標識符,以便類,名稱空間等。在每個變量名稱被重複時工作。 JIT編譯器對於在運行時編譯爲字節碼或可執行文件的其他常用語言,或者像將HipHop編譯爲C++等的轉譯器一樣,也是如此。 – Jason

相關問題