Caching和Pooling有什麼區別?緩存和共享有什麼區別?
回答
緩存 - 存儲常用值,通常是因爲查找和/或創建不平凡。例如如果經常使用數據庫的查找表,或者從磁盤上的文件讀取值,那麼將其保存在內存中並定期刷新它會更有效。
緩存只管理緩存中的對象生存期,但不對緩存中保存的內容施加語義。緩存也不會創建項目,而只是存儲對象。
池 - 用於描述由池本身管理的一組資源的術語。例如(數據庫)連接池 - 當需要連接時,它從池中獲取,並在完成時返回到池中。
池本身處理創建和銷燬池中的對象,並管理可以在任何時候創建多少個對象。
池通常用於減少開銷並限制對資源的訪問。您不希望每個servlet請求都打開到數據庫的新連接。因爲那麼你在活動請求和打開的連接之間有1:1的關係。創建銷燬這些連接的開銷是浪費的,再加上你可能很容易壓倒你的數據庫。通過使用池,這些打開的連接可以共享。例如,500個活動請求可能共享少至5個數據庫連接,具體取決於典型請求需要連接的時間。
高速緩存池 - 大多數似乎描述存在的(獨立的?)高速緩存的數量。例如。一個asp.net應用程序對每個應用程序域有1個緩存(緩存不在asp.net應用程序之間共享)。從字面上看是一堆緩存,儘管這個詞似乎很少使用。
兩者都以對象重用爲目標。區別通常是有狀態的。池是無狀態對象的集合,緩存是有狀態對象之一。見this explanation。
緩存通常指的是保存數據的靜態副本以便快速檢索(假設檢索或計算值很昂貴)。
合併通常是指保留大量資源以便快速使用(假設創建和/或處置這些資源很昂貴)。
無論是重複使用和減少過程的內存佔用(也擺脫對象創建開銷)。一個值得注意的差異是池在上下文的生命週期中一次又一次地使用相同的對象,其中在緩存中(至少在LRU中)你驅逐對象以爲新創建的對象騰出空間。
另一個差異將是以下問題的答案。你想返回一個特定的對象或任何對象會罰款?答案明確了你需要什麼 - 緩存或池。
- 1. GPU中共享內存和L1緩存有什麼區別?
- 2. 天青共享緩存和新天青REDIS緩存之間有什麼區別?
- 3. IPC與共享內存的共享內存有什麼區別?
- 4. 共享內存:密鑰和ID有什麼區別?
- 5. cpu緩存和內存緩存有什麼區別
- 6. HDF5:「文件緩衝區」和「文件緩存」有什麼區別?
- 7. 引發緩存和空緩存之間有什麼區別?
- 8. l1緩存和l2緩存有什麼區別?
- 9. 休眠緩存和Spring遠程緩存有什麼區別?
- 10. 客戶端緩存和服務器緩存有什麼區別
- 11. 共享公式和數組公式有什麼區別?
- 12. 共享位置和GAC有什麼區別?
- 13. vim中的緩衝區和寄存器有什麼區別?
- 14. 什麼是共享點中的緩存
- 15. 消息傳遞和共享內存併發模型之間有什麼區別?
- 16. Ehcache中「緩存未命中」和「內存緩存未命中」有什麼區別?
- 17. 緩存! saveLocations()和addLocation()函數有什麼區別?
- 18. maven從緩存和更新生成工件有什麼區別
- 19. 緩存和應用程序有什麼區別?
- 20. HttpContext的緩存和項目屬性有什麼區別?
- 21. 索引,緩存和在git中上演有什麼區別?
- 22. joomla 2.5中保守緩存和漸進緩存有什麼區別?
- 23. 網頁緩存和ajax調用緩存之間有什麼區別?
- 24. 存在和定義有什麼區別?
- 25. 間諜和存根有什麼區別?
- 26. 緩衝區和緩存區別?
- 27. Facebook共享緩存
- 28. SQLite共享緩存
- 29. ASP.Net緩存共享
- 30. 公共靜態,公共和靜態方法有什麼區別?