什麼是堆外記憶體off-heap
堆Heap是記憶體中動態分配物件居住的地方。如果使用new一個物件,它就被分配在堆記憶體上。這是相對於Stack,如果你有一個區域性變數則它是位於Stack棧記憶體空間。
BigMemory是用來避免GC對堆的開銷,從幾MB或GB大。 BigMemory透過直接的ByteBuffers使用JVM程式的記憶體地址空間,不像其他原生Java物件接受GC管束。
EHCache(Terrcotta BigMemory)的 off-heap將你的物件從堆中脫離出來序列化,然後儲存在一大塊記憶體中,這就像它儲存到磁碟上上一樣,但它仍然在RAM中。物件在這種狀態下不能直接使用,它們必須首先反序列化。也不受垃圾收集。序列化和反序列化會影響效能。(FST-serialization還是很快)。
使用堆外記憶體能夠降低GC導致的暫停。
應用場景:
1.Session會話快取,儲存不啟用的使用者session,比如使用者沒有正常退出,我們也無法確定他會不會短時間內再回來,將其會話存到堆外記憶體。一旦再次登入,無需訪問資料庫可再次啟用。
2.計算結果的快取,大量查詢的結果等,擊中率比較低的都可以遷移到堆外。
BigMemory是用來避免GC對堆的開銷,從幾MB或GB大。 BigMemory透過直接的ByteBuffers使用JVM程式的記憶體地址空間,不像其他原生Java物件接受GC管束。
EHCache(Terrcotta BigMemory)的 off-heap將你的物件從堆中脫離出來序列化,然後儲存在一大塊記憶體中,這就像它儲存到磁碟上上一樣,但它仍然在RAM中。物件在這種狀態下不能直接使用,它們必須首先反序列化。也不受垃圾收集。序列化和反序列化會影響效能。(FST-serialization還是很快)。
使用堆外記憶體能夠降低GC導致的暫停。
應用場景:
1.Session會話快取,儲存不啟用的使用者session,比如使用者沒有正常退出,我們也無法確定他會不會短時間內再回來,將其會話存到堆外記憶體。一旦再次登入,無需訪問資料庫可再次啟用。
2.計算結果的快取,大量查詢的結果等,擊中率比較低的都可以遷移到堆外。
[該貼被banq於2014-01-12 17:04修改過]
相關文章
- java 堆外記憶體排查Java記憶體
- Java堆外直接記憶體回收Java記憶體
- JAVA堆外記憶體排查小結Java記憶體
- JVM堆外記憶體問題排查JVM記憶體
- netty 堆外記憶體洩露排查盛宴Netty記憶體洩露
- Java直接(堆外)記憶體使用詳解Java記憶體
- Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)RedisError記憶體溢位
- 什麼是Java記憶體模型?Java記憶體模型
- 什麼是Java記憶體模型Java記憶體模型
- 記一次堆外記憶體洩漏分析記憶體
- Java記憶體模型FAQ(一) 什麼是記憶體模型Java記憶體模型
- 堆外記憶體及其在 RxCache 中的使用記憶體
- Java記憶體模型是什麼,為什麼要有Java記憶體模型,Java記憶體模型解決了什麼問題?Java記憶體模型
- jvm 堆記憶體JVM記憶體
- Python如何管理記憶體?記憶體分配機制是什麼?Python記憶體
- Python記憶體檢視是什麼Python記憶體
- Java堆記憶體Heap與非堆記憶體Non-HeapJava記憶體
- 什麼是Java記憶體模型(JMM)中的主記憶體和本地記憶體?Java記憶體模型
- 關於JVM堆外記憶體的一切JVM記憶體
- 使用mtrace追蹤JVM堆外記憶體洩露JVM記憶體洩露
- JS中的棧記憶體、堆記憶體JS記憶體
- 直接記憶體和堆記憶體誰快記憶體
- “堆外記憶體”這玩意是真不錯,我要寫進簡歷了。記憶體
- 分散式 | 令人頭疼的堆外記憶體洩露怎麼排查?分散式記憶體洩露
- 記一次堆外記憶體洩漏排查過程記憶體
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- NameNode堆記憶體估算記憶體
- [轉載] Java直接記憶體與堆記憶體Java記憶體
- JVM原始碼分析之堆外記憶體完全解讀JVM原始碼記憶體
- 什麼是伺服器記憶體?如何選擇伺服器記憶體?伺服器記憶體
- JVM堆記憶體詳解JVM記憶體
- Netty基礎系列(4) --堆外記憶體與零拷貝Netty記憶體
- 一次尋常的堆外記憶體洩漏排查記憶體
- Java heap、no-heap 和 off-heap 記憶體基礎與實踐Java記憶體
- 詳解JVM中的記憶體模型是什麼?JVM記憶體模型
- 一文探討堆外記憶體的監控與回收記憶體
- 記憶體科普:DIMM是指什麼,和DDR有什麼區別?記憶體
- 託管堆記憶體佔用記憶體
- JVM 堆記憶體設定原理JVM記憶體