JIT相关编译选项 Advanced JIT Compiler Options -XX:+AggressiveOpts 最核心的应该是加快编译,在JDK 6之后就默认启用的,启用一些诸如编译优化、偏向锁、并行化老年代收集策略。通常是不用管的,默认的优化策略,添加此参数的原因是为工程提供一个优化技术选择的空间。 -XX:AllocateInstancePrefetchLines=lines 在实例分配指针之前设置要预取的行数。默认情况下,要预取的行数设置为1。- xx:AllocateInstancePrefetchLines = 1只有Java HotSpot服务器VM支持这个选项。
-XX:AllocatePrefetchDistance=size 设置对象分配的预取距离,每个Java线程都有自己的分配点。默认值随JVM运行的平台而异。在这个距离(以字节为单位),在最后一个分配对象的地址之外,以新对象的值写入内存。 -XX:AllocatePrefetchInstr=instruction 将预取指令设置为在分配指针之前预取。只有Java HotSpot Server VM支持此选项。可能的值从0到3。值背后的实际指令取决于平台。默认情况下,预取指令设置为0:- xx:AllocatePrefetchInstr = 0 只有Java HotSpot服务器VM支持这个选项。 -XX:AllocatePrefetchLines=lines 使用JIT编译代码中生成的预取指令,在最后一个对象分配之后加载的缓存行数。如果最后分配的对象是实例,默认值为1;如果是数组,默认值为3。 -XX:AllocatePrefetchStepSize=size 设置顺序预取指令的步骤大小(以字节为单位)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。默认情况下,步长设置为16字节:- xx:AllocatePrefetchStepSize = 16,只有Java HotSpot服务器VM支持这个选项。 -XX:AllocatePrefetchStyle=style 为预取指令生成代码样式。 0 -无预取指令产生d, 1 -每次分配后执行预取指令, 2 -执行预取指令时,使用TLAB分配标记指针到gate。 -XX:+BackgroundCompilation 启动后台默认编译 -XX:CICompilerCount=threads 调整编译线程的数目 -XX:CodeCacheMinimumFreeSpace=size 缓存代码最小空内存,防止内存溢出 -XX:CompileCommand=command,method[,option(break、compileonly、dontinline、exclude、help、inline、log、option、print、quiet)] 该参数用于定制编译需求,比如过滤某个方法不做JIT编译,若未指定方法描述符,则对全部同名方法执行命令操作 -XX:CompileCommandFile=filename 配合上述指令来使用,指定.hotspot_compiler文件为其他文件。 -XX:CompileOnly=methods 仅编译项 -XX:CompileThreshold=invocations 编译前方法调用/分支的数目【-client默认是1500】 -XX:+DoEscapeAnalysis 逃逸分析优化-栈上分配 -XX:InitialCodeCacheSize=size 设置初始代码缓存的大小 -XX:+Inline 使方法内联。默认情况下,这个选项可以提高性能。要禁用方法内联,指定-XX:-Inline即可。 -XX:InlineSmallCode=size 当生成本地代码的大小小于给定的值时,内联这个预编译方法。 -XX:+LogCompilation 允许将编译活动记录到名为hotspot的文件中。登录当前工作目录。可以使用-XX:LogFile选项指定不同的日志文件路径和名称。 默认情况下,禁用此选项,不记录编译活动。必须将-XX:+ logcompile选项与-XX: unlockdiagnostics vmoptions选项一起使用,该选项解除诊断JVM选项的锁定。 您可以通过使用-XX:+ printcompile选项,在每次编译方法时,通过向控制台打印的消息来启用详细诊断输出。 -XX:MaxInlineSize=size 内联一个方法的最大字节码大小 -XX:MaxNodeLimit=nodes 设置在单个方法编译期间要使用的最大节点数。 -XX:MaxTrivialSize=size 设置要内联的小方法的最大字节码大小(以字节为单位)。附加字母k或k表示千字节,m或m表示兆字节,g或g表示千兆字节。 -XX:+OptimizeStringConcat 可能的话优化字符串连接操作(从Java6引入) -XX:+PrintAssembly 允许使用外部反汇编程序打印字节码和本机方法的汇编代码。所以图书馆。这使您能够看到生成的代码,这可以帮助您诊断性能问题。 -XX:+PrintCompilation 当方法被编译时打印消息 -XX:+PrintInlining 允许打印内部信息。能够看到哪些方法是内联的。 -XX:ReservedCodeCacheSize=size 保留的代码缓存大小-最大的代码缓存大小 -XX:RTMAbortRatio=abort_ratio RTM中止比率被指定为所有已执行的RTM事务的百分比(%)。如果许多中止的事务超过这个比率,那么编译后的代码将被取消优化。在启用-XX:+UseRTMDeoptoption时使用此比率。这个选项的默认值是50。这意味着,如果50%的事务被中止,编译后的代码将被反优化。 -XX:RTMRetryCount=number_of_retries RTM锁定代码将被重新尝试,当它被中止或繁忙时,在回到正常锁定机制之前,该选项指定的次数。此选项的默认值为5。必须启用-XX: usertmlocked选项。 -XX:-TieredCompilation 禁止使用分层编译。默认情况下,这个选项是启用的。只有Java HotSpot服务器VM支持这个选项。 -XX:+UseAES 为Intel、AMD和SPARC硬件提供基于硬件的AES特性。Intel Westmere(2010和更新的),AMD推土机(2011和更新的)和SPARC (T4和更新的)是支持的硬件。UseAES与useaesintrinsic一起使用。 -XX:+UseAESIntrinsics UseAES和useaesentisics标志是默认启用的,只支持Java HotSpot Server VM 32位和64位。要禁用基于硬件的AES intrinsic,请指定-XX:-UseAES -XX:- useaesintrinsic。例如,要启用硬件AES,请使用以下: