Java LargePageHeapSizeThreshold是否在JVM中激活UseTransparentThugePage?
最近我注意到,在Linux发行版中,我们有巨大的页面内存,可以将其设置为始终,以允许系统始终使用巨大的页面,madvise让应用程序确定是否要使用巨大的页面,或者从不 此功能有时会降低应用程序性能 在JVM中,我们可以激活两个参数来控制操作系统的功能 LargePageHeapSizeThreshold:如果此值小于MaxHeapSize,JVM将使用较大的页面大小 UseTransparentHugePages:它是一个布尔值,可以为真也可以为假 我的问题是,是否将LargePageHeapSizeThreshold设置为小于MaxHeapSize的值,即使UseTransparentThagePages=false也会激活巨大的页面 在linux中,将大页面大小设置为是否总是会激活JVM以使用大页面,即使useTransparentThugePages=false 正在将LargePageHeapSizeThreshold设置为小于的值 MaxHeapSize会激活巨大的页面,即使 UseTransparentHugePages=假 不,它可以工作:如果最大堆大小小于Java LargePageHeapSizeThreshold是否在JVM中激活UseTransparentThugePage?,java,linux,jvm,huge-pages,Java,Linux,Jvm,Huge Pages,最近我注意到,在Linux发行版中,我们有巨大的页面内存,可以将其设置为始终,以允许系统始终使用巨大的页面,madvise让应用程序确定是否要使用巨大的页面,或者从不 此功能有时会降低应用程序性能 在JVM中,我们可以激活两个参数来控制操作系统的功能 LargePageHeapSizeThreshold:如果此值小于MaxHeapSize,JVM将使用较大的页面大小 UseTransparentHugePages:它是一个布尔值,可以为真也可以为假 我的问题是,是否将LargePageHeapS
LargePageHeapSizeThreshold
,则默认情况下禁用大页面
然而,这只适用于“客户机”VM,它没有C2或Graal编译器(现在是一种非常奇特的情况)。因此,在最流行的JVM版本中,标志LargePageHeapSizeThreshold
完全不起作用
在linux中将“大页面大小”设置为“始终”是否会激活JVM以使用大页面,即使UseTransparentThugePages=false
我假定您指的是以下设置:
echo always >/sys/kernel/mm/transparent_hugepage/enabled
在这种模式下,Linux试图为匿名内存映射分配巨大的页面(包括Java堆和代码缓存),而应用程序甚至不知道巨大的页面。因此,是的,JVM可能会从这个选项中受益,即使它不关心巨大的页面本身
另一方面,不能保证Java堆在这种模式下总是使用巨大的页面。如果Linux无法为一个内存区域分配巨大的页面(例如,由于碎片),它将自动返回到使用普通页面