Java 18 如何改進處理大型物件回收的記憶體碎片問題? -
由於記憶體集資料結構的限制,Java 的G1堆區域的大小一直限制在 32MB;使用 JDK 18 版本JDK-8275056將把這個限制提高到 512MB。
在垃圾收集期間,G1會從一堆死物件中選擇它認為包含大量空白空間的任意區域,並將它們的活動物件移動並壓縮到另一個(更小)區域集。不同之處在於 G1 在此集合中釋放了哪些內容以供進一步應用程式使用。
通常情況下,物件不能跨越區域:典型的 Java 物件範圍在幾十個位元組,因此可用區域大小的範圍(從 1MB 到 32MB)通常不是問題。
如果您的應用程式使用大量大物件,那麼這種巨大物件分配的實現選擇可能會導致碎片問題。
JDK 18 版本JDK-8275056是如何克服堆區域大小限制的呢?新的記憶體集實現不再需要 Java 堆區域和記憶體集的 1:1 對映。而是1:n 對映:單個堆區域現在可能被多個卡片區域覆蓋。由此,解鎖了高達 512MB 的可配置堆區域大小(這是一個任意限制),即使使用最大的龐大物件和 Java 堆,也應具有足夠的靈活性以避擴音到的碎片問題。
詳細點選標題
相關文章
- 記憶體分配問題處理記憶體
- 解決golang 的記憶體碎片問題Golang記憶體
- Linux記憶體異常問題處理Linux記憶體
- Java進階10 記憶體管理與垃圾回收Java記憶體
- Java的記憶體回收機制Java記憶體
- PHP的記憶體洩露問題與垃圾回收PHP記憶體洩露
- 排查Java的記憶體問題Java記憶體
- java記憶體垃圾回收模型Java記憶體模型
- TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- mysql 記憶體表The table 'pvlogs' is full問題處理MySql記憶體
- 如何處理 JavaScript 記憶體洩露JavaScript記憶體洩露
- JavaScript 工作原理之三-記憶體管理及如何處理 4 類常見的記憶體洩漏問題(譯)JavaScript記憶體
- Java記憶體管理 -JVM 垃圾回收Java記憶體JVM
- Java堆外直接記憶體回收Java記憶體
- Java物件記憶體模型Java物件記憶體模型
- Java 物件記憶體分析Java物件記憶體
- 關於java吃記憶體的問題Java記憶體
- 【JVM之記憶體與垃圾回收篇】物件例項化記憶體佈局與訪問定位JVM記憶體物件
- redis的記憶體滿了之後,redis如何回收記憶體嗎Redis記憶體
- 圖解Java記憶體回收機制圖解Java記憶體
- Java物件的記憶體佈局Java物件記憶體
- golang 垃圾回收器如何標記記憶體?Golang記憶體
- JavaScript 中的記憶體洩漏以及如何處理JavaScript記憶體
- JavaScript中的記憶體洩漏以及如何處理JavaScript記憶體
- Java記憶體模型常見問題Java記憶體模型
- JavaScript 是如何工作的:記憶體管理 + 如何處理四種常見的記憶體洩漏JavaScript記憶體
- Java將引入新的物件型別來解決記憶體利用問題Java物件型別記憶體
- Java物件記憶體佈局Java物件記憶體
- Redis4.0如何自動清理記憶體碎片Redis記憶體
- Java記憶體模型,垃圾回收機制,常用記憶體命令及工具Java記憶體模型
- 記憶體碎片與緩解記憶體
- JVM記憶體結構、Java記憶體模型和Java物件模型JVM記憶體Java模型物件
- Java11改進的垃圾回收器Java
- 處理大型資料集而不會耗盡記憶體的方式推薦記憶體
- Java記憶體模型FAQ(五)舊的記憶體模型有什麼問題?Java記憶體模型
- JAVA的堆疊和記憶體、垃圾回收解說Java記憶體
- Java記憶體問題 及 LeakCanary 原理分析Java記憶體
- Android記憶體分配/回收的一個問題-為什麼記憶體使用很少的時候也GCAndroid記憶體GC