巨大的頁面和DirectByteBuffer在Java熱點JVM我想怎麼辦在Linux上使用
我需要使用直接存儲器來避免GC走動的事情。我想爲這些頁面啓用大頁面。
到目前爲止
標誌-XX:+ UseLargePages使用堆緩衝區(非直接的ByteBuffers)時工作正常,但使用DirectByteBuffers時不工作了。 我也嘗試過使用MappedByteBuffers和一個hugetlbfs文件系統。這工作但提出了一些問題,所以我正在尋找一個不同的解決方案。
配置 CentOS版本6.3,熱點,jdk1.7
[編輯]
看熱點的源代碼,他們使用的是一個malloc與不安全,分別的shmat分配內存/ shmget或mmap將需要使用巨大的頁面。
[編輯]爲什麼非堆內存
我們正處在一個NUMA背景下,對於內存數據庫,有很多長壽的對象。當UseNUMA標誌打開時,JVM不會對舊的分區進行分區。使用直接內存可以讓我們將內存保持在需要它的線程附近。
基準測試在決定使用DirectByteBuffers方面顯然扮演着重要角色。我是而不是問我是否應該使用DirectByteBuffer,我寧願尋找我的問題的答案。