《JDK10新特性官方文件》在可選記憶體裝置上的分配堆記憶體
JEP 316: 在可選記憶體裝置上的分配堆記憶體
Owner |
Kishor Kharbas |
Created |
2016/12/13 19:31 |
Updated |
2018/03/20 20:32 |
Type |
Feature |
Status |
Closed / Delivered |
Component |
hotspot / gc |
Scope |
JDK |
Discussion |
hotspot dash dev at openjdk dot java dot net |
Effort |
M |
Duration |
M |
Priority |
3 |
Reviewed by |
Mikael Vidstedt |
Endorsed by |
Mikael Vidstedt, Vladimir Kozlov |
Release |
10 |
概要
允許HotSpot VM在使用者指定的備用記憶體裝置(如NV-DIMM)上分配Java堆物件。
動機
有了便宜的NV-DIMM記憶體,未來的系統可能配備異構記憶體架構。這種技術的一個例子是英特爾的3D XPoint。除DRAM之外,這種架構將具有一種或多種具有不同特性的非DRAM儲存器。
該JEP針對與DRAM具有相同語義的可替代儲存器裝置,包括原子操作的語義,因此可以替代
此提議的一些使用案例是:
1.在多JVM部署中,某些JVM,如守護程序,服務等的優先順序低於其他程序。與DRAM相比,NV-DIMM可能具有更高的訪問延遲。低優先順序程序可以為堆使用NV-DIMM記憶體,允許高優先順序程序使用更多DRAM。
2.大資料和記憶體資料庫等應用程式對記憶體的需求不斷增加。這種應用可以將堆記憶體分配在NV-DIMM,因為與DRAM相比,NV-DIMM可能具有更大的容量,更低的成本。
描述
一些作業系統已經通過檔案系統暴露非DRAM
要在這樣的記憶體中分配堆,我們可以新增一個新選項-XX:AllocateHeapAt = <path>。此選項將採用檔案系統的路徑並使用記憶體對映來實現在記憶體裝置上分配堆物件。 JEP不打算在多個正在執行的JVM之間共享一個非易失性區域,或者重用一個區域來呼叫JVM。
現有堆相關引數(如-Xmx,-Xms等)和垃圾收集相關引數將繼續像以前一樣有效。
為確保應用程式實現的安全性,必須確保在檔案系統中建立的檔案是:
1.受正確許可權保護,以防止其他使用者訪問它。
2.在任何可能情況下,應用程式終止時刪除。
測試
測試不一定需要任何特殊的記憶;它可以在例如ramfs或tmpfs的記憶體中的檔案系統上執行。