據我所知,靜態變量和方法在不同的會話中共享。考慮到這種行爲可能會導致性能下降,例如,當不同的會話正在讀取靜態變量或同時調用靜態變量時。Tomcat:跨會話共享靜態變量和方法。
1
A
回答
0
只要沒有其他線程正在寫入該變量,多線程讀取相同變量或同時調用同一方法時通常不會有性能損失。
如果一個線程可以編寫另一個線程正在讀取的變量,那麼您有一個需要謹慎處理的併發控制問題。
但是,請注意,當一個線程寫入的變量在內存中與其他線程讀取的變量相鄰時,在特定種類的硬件上可能會有例外情況。在這種情況下,它們可能處於同一個「緩存行」 - 從RAM中讀取並緩存的內存單元,在這種情況下,讀寫器之間可能存在爭用,因爲硬件無法說明它們沒有訪問相同的位置。
這是一個「假分享」。
0
簡單地說,「跨會話使用靜態變量」本質上並不會影響性能。但是,您需要關注一下表親關係,而不是。
您正在從多個用戶會話讀取/寫入的字段將同時訪問。這意味着你將需要使你的對象線程安全(如果你正在寫這些靜態字段,這將是必要的)。 這個是什麼可以有直接的性能影響。
相關問題
- 1. 靜態方法內部變量共享
- 2. 靜態變量如何在Web會話中共享
- 3. 有Coldfusion和asp.net共享會話變量
- 4. 從非靜態/共享方法調用靜態/共享方法,好還是壞?
- 5. 跨進程共享狀態變量
- 6. 靜態變量和方法
- 7. 靜態方法和變量
- 8. 跨多個Windows的共享變量的靜態類
- 9. 靜態類和會話變量
- 10. 兩線程共享靜態變量
- 11. Swift中的共享(或靜態)變量
- 12. 共享庫內部的靜態變量
- 13. 會話變量是否跨不同的瀏覽器共享?
- 14. 是否跨運行腳本共享一個PHP會話變量?
- 15. 如何從共享會話變量
- 16. 在多個會話中共享變量
- 17. 靜態方法中的靜態變量不會改變
- 18. 通過非靜態方法更改公共靜態變量
- 19. PHP:子類靜態繼承 - 子類共享靜態變量?
- 20. 如何在靜態方法中獲取會話變量的值?
- 21. struts2,使用靜態參數調用會話變量方法
- 22. 跨節點應用共享Redis會話
- 23. 跨域的PHP共享會話
- 24. Tomcat6.0.20上的跨域共享會話
- 25. rails 4共享會話跨子域
- 26. 如何跨子域共享symfony2會話
- 27. 共享和靜態庫
- 28. 共享方法在ASP.NET會話
- 29. 靜態變量,Tomcat和內存泄漏
- 30. 動態鏈接時共享庫中的全局變量和靜態變量會發生什麼變化?