os::realign_memory(char *addr, size_t bytes, size_t alignment_hint)
- 引数で渡されたアドレス範囲がHugePage上に割り当てられている事をカーネルに伝える
- 1ページは通常は4KBであるが、HugaPageは2MB
//Linux版(jdk7/hotspot/src/os/linux/vm/os_linux.cpp) void os::realign_memory(char *addr, size_t bytes, size_t alignment_hint) { if (UseHugeTLBFS && alignment_hint > (size_t)vm_page_size()) { // We don't check the return value: madvise(MADV_HUGEPAGE) may not // be supported or the memory may already be backed by huge pages. //glibcのmadviseを呼び出す //詳細 -> http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/madvise.2.html ::madvise(addr, bytes, MADV_HUGEPAGE); } }