2009-12-02 40 views
3

不知道它是如何工作的,但我有一個問題: - 是否靜態使應用程序的緩慢,因爲同一個變量或方法在整個應用程序共享,並且當一個請求使用方法或變量另一種必須等待它被釋放。是否靜態讓它慢

回答

5

不,不。此外,.NEt不會因爲您同時從程序的不同部分訪問變量而自動鎖定變量。你將不得不自己實現鎖定。

+1

@Maxmimilian感謝您的答覆,我還發現,所有的靜態變量存儲在堆中,因爲它們不限於任何對象的範圍,因此GC將不收取任何的靜態成員,直到應用程序域現在可以慢關閉系統我想 – 2009-12-02 13:18:21

5

不,不。它只是使應用程序線程不安全。如果你想要它是安全的,你必須鎖定函數/變量,然後是的,它必須等待。 (這隻對多線程的環境中,如果你只使用一個線程,也不要緊,因爲功能不能同時運行「兩次」)

+2

關於內存消耗什麼?太多的靜態變量可能需要大量內存,最終會減慢操作系統的速度(因爲靜態變量不會被GC收集)。 – 2009-12-02 12:05:14