JVM参数及含义

以下内容引自:实战JAVA虚拟机 JVM故障诊断与性能优化  一书

JVM参数及含义_第1张图片

JVM参数及含义_第2张图片

JVM参数及含义_第3张图片

JVM参数及含义_第4张图片

-Xmx     最大可用堆空间

-Xms     最小可用堆空间    在实际工作中一般设置-Xmx与-Xms相同。这样的好处是可以减少程序运行时进行的垃圾回收次数,从而提高程序的性能。

-Xmn    设置新生代的大小。设置一个较大的新生代会减小老年代的大小,这个参数对系统性能以及GC行为有很大的影响。新生代的大小一般设置为整个堆空间的1/3到1/4左右。

-XX:SurvivorRatio   用来设置新生代中eden空间和from/to空间的比例关系,它的含义如下-XX:SurvivorRatio=eden/from=eden/to

-Xss      线程的最大栈空间       由于每次函数调用都会生成对应的栈帧,从而占用一定的栈空间,因此如果栈空间不足,那么函数调用自然无法继续进行下去。当请求的栈深度大于最大可用栈深度时,系统就会抛出 StackOverflowError    栈溢出错误。

-XX:+HeapDumpOnOutOfMemoryError    在内存溢出时导出整个堆信息。

-XX:HeapDumpPath   可以指定导出堆信息的存放路径。-XX:HeapDumpPath=d:/a.dump

-XX:OnOutOfMemoryError    在虚拟机OOM时执行一个脚本文件,该文件可以用于奔溃程序的自救,报警或者通知。也可以帮助开发人员获得更多的系统信息,如完整的线程转存(即Thread Dump或者Core Dump )文件。"-XX:OnOutOfMemoryError=d:/a.bat %p"

-XX:MaxDirectMemorySize    最大可用直接内存,如不设置,默认值为最大堆空间,即-Xmx。当直接内存使用量达到最大值时,就会触发垃圾回收,如果垃圾回收不能有效释放足够空间,直接内存溢出依然会引起系统的OOM。

-XX:+PrintGC   输出GC日志信息

-XX:+PrintGCDetails   输出GC日志详细信息

-server  Server模式

-XX:+DoEscapeAnalysis    启用逃逸分析

-XX:+EliminateAllocations  开启标题替换(默认开启)

-XX:MaxPermSize    方法区最大空间  默认为64MB   

-XX:PermSize      方法区初始空间大小

JDK1.8 方法区移除

-XX:MaxMetaspaceSize   元数据区空间大小

-XX:MaxMetaspaceSize  元数据区初始大小

 在JDK1.8中,方法区已经被彻底移除。取而代之的是元数据区,其大小可以使用参数-XX:MaxMetaspaceSize指定(一个大的元数据区可以使系统支持更多的类),这是一块堆外的直接内存。与永久区不同,如果不指定大小,默认情况下,虚拟机会耗尽所有的可用系统内存。   

-XX:+PrintHeapAtGC    它会在每次GC前后分别打印堆的信息,可以很好的观察GC对堆空间的影响。

-XX:+PrintGCTimeStamps    在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量。

-XX:+PrintGCApplicationConcurrentTime    打印应用程序的执行时间

-XX:+PringGApplicationsStoppedTime    打印应用程序由于GC而产生的停顿时间

-Xloggc    默认情况下,GC日志会在控制台中输出,不便于后续分析和定位问题。为此虚拟机允许将GC日志以文件的形式输出                    -Xloggc:log.gc.log。

-verbose:class    跟踪类的加载和卸载。

-XX:+TraceClassLoading    跟踪类的加载

-XX:+TraceClassUnloading    跟踪类的卸载。

-XX:+PringClassHistogram    打印,查看系统中类的分布情况,在Java的控制台中按下Ctrl+Break组合键,控制台上就会显示当前的类信息柱状图。

-XX:+PrintVMOptions    可以在程序运行时,打印虚拟机接受到的命令行显式参数,。

-XX:+PrintCommandLineFlags    可以打印传递给虚拟机的显式和隐式参数,隐式参数未必是通过命令行直接给出的,它可能是由虚拟机启动时自行设置的。

-XX:+PrintFlagsFinal    它会打印所有的系统参数的值。

-XX:+UseSerialGC       新生代,老年代都使用串行回收器

-XX:+UseParNewGC   新生代使用ParNew回收器,老年代使用串行回收器

-XX:+UseParallelGC    新生代使用ParallelGC回收器,老年代使用串行回收器

-XX:+UseConcMarkSweepGC    新生代使用ParNew回收器,老年代使用CMS

-XX:+UseParallelOldGC    新生代使用Parallel回收器,老年代使用ParallelOldGC回收器

-XX:+UseG1GC     标记打开G1收集器开关

-XX:-CMSPrecleaningEnabled    关闭CMS预清理操作

-XX:+DisableExplicitGC    禁用显式使用System.gc()

-XX:+ExplicitGCInvokesConcurrent    默认情况下,System.gc()使用传统的Full GC方式回收整个堆,而会忽略相关垃圾收集器的参数,如:-XX:+UseG1GC ,-XX:+UseConcMarkSweepGC 。而-XX:+ExplicitGCInvokesConcurrent  会改变System.gc()的这一默认行为。

 

 

   

你可能感兴趣的:(jvm)