java虚拟机启动参数

  • 常用参数

  堆设置

  • -Xms :初始堆大小
  • -Xmx :最大堆大小
  • -XX:NewSize=n :设置年轻代大小
  • -XX:NewRatio=n :设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
  • -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
  • -XX:MaxPermSize=n :设置持久代大小
  • -XX:HeapDumpPath=./java_pid<pid>.hprof   指定导出堆信息时的路径或文件名
  • -XX:-HeapDumpOnOutOfMemoryError  当首次遭遇OOM时导出此时堆中相关信息

  栈大小设置

  • -Xss:size  设置栈大小

  收集器设置

  • -XX:+UseSerialGC :设置串行收集器
  • -XX:+UseParallelGC :设置并行收集器
  • -XX:+UseParalledlOldGC :设置并行年老代收集器
  • -XX:+UseConcMarkSweepGC :设置并发收集器
  • -verbose: gc 显示垃圾收集信息

  垃圾回收统计信息

  • -XX:+PrintGC
  • -XX:+PrintGCDetails
  • -XX:+PrintGCTimeStamps
  • -Xloggc:filename   指定垃圾收集日志文件

  并行收集器设置

  • -XX:ParallelGCThreads=n :设置并行收集器收集时使用的CPU数。并行收集线程数。
  • -XX:MaxGCPauseMillis=n :设置并行收集最大暂停时间
  • -XX:GCTimeRatio=n :设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

  并发收集器设置

  • -XX:+CMSIncrementalMode :设置为增量模式。适用于单CPU情况。
  • -XX:ParallelGCThreads=n :设置并发收集器年轻代收集方式为并行收集时,使用的CPU数,并行收集线程数。

  类加载器设置:

  • -verbose:class  输出jvm加载类的相关信息

==================================================

  • 启动标准参数  格式 (-)

  在命令行执行  java

  • 非标准参数  格式(-X)

  在命令行执行java -X

  • 非Stable参数   格式(-XX)

   参见官方文档  Java HotSpot VM Options   http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

=======官方文档========

Categories of Java HotSpot VM Options

Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows and Solaris & Linux. This document deals exclusively with non-standard options recognized by the Java HotSpot VM:

  • Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.
  • Options that are specified with -XX are not stable and are subject to change without notice.

Users of JDKs older than 1.3.0 who wish to port to a Java HotSpot VM, should see Java HotSpot Equivalents of Exact VM flags.

Some Useful -XX Options

Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.

  • Boolean options are turned on with -XX:+<option> and turned off with -XX:-<option>.Disa
  • Numeric options are set with -XX:<option>=<number>. Numbers can include ‘m‘ or ‘M‘ for megabytes, ‘k‘ or ‘K‘ for kilobytes, and ‘g‘ or ‘G‘ for gigabytes (for example, 32k is the same as 32768).
  • String options are set with -XX:<option>=<string>, are usually used to specify a file, a path, or a list of commands

Flags marked as manageable are dynamically writeable through the JDK management interface (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. In Monitoring and Managing Java SE 6 Platform Applications, Figure 3 shows an example. The manageable flags can also be set through jinfo -flag.

The options below are loosely grouped into categories.

  • Behavioral options change the basic behavior of the VM.
  • Garbage First (G1) Garbage Collection Options
  • Performance tuning options are knobs which can be used to tune VM performance.
  • Debugging options generally enable tracing, printing, or output of VM information.

Behavioral Options


Option and Default Value


Description


-XX:-AllowUserSignalHandlers


Do not complain if the application installs signal handlers. (Relevant to Solaris and Linux only.)


-XX:AltStackSize=16384


Alternate signal stack size (in Kbytes). (Relevant to Solaris only, removed from 5.0.)


-XX:-DisableExplicitGC


By default calls to System.gc() are enabled (-XX:-DisableExplicitGC). Use -XX:+DisableExplicitGC to disable calls to System.gc(). Note that the JVM still performs garbage collection when necessary.


-XX:+FailOverToOldVerifier


Fail over to old verifier when the new type checker fails. (Introduced in 6.)


-XX:+HandlePromotionFailure


The youngest generation collection does not require a guarantee of full promotion of all live objects. (Introduced in 1.4.2 update 11) [5.0 and earlier: false.]


-XX:+MaxFDLimit


Bump the number of file descriptors to max. (Relevant  to Solaris only.)


-XX:PreBlockSpin=10


Spin count variable for use with -XX:+UseSpinning. Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (Introduced in 1.4.2.)


-XX:-RelaxAccessControlCheck


Relax the access control checks in the verifier. (Introduced in 6.)


-XX:+ScavengeBeforeFullGC


Do young generation GC prior to a full GC. (Introduced in 1.4.1.)


-XX:+UseAltSigs


Use alternate signals instead of SIGUSR1 and SIGUSR2 for VM internal signals. (Introduced in 1.3.1 update 9, 1.4.1. Relevant to Solaris only.)


-XX:+UseBoundThreads


Bind user level threads to kernel threads. (Relevant to Solaris only.)


-XX:-UseConcMarkSweepGC


Use concurrent mark-sweep collection for the old generation. (Introduced in 1.4.1)


-XX:+UseGCOverheadLimit


Use a policy that limits the proportion of the VM‘s time that is spent in GC before an OutOfMemory error is thrown. (Introduced in 6.)


-XX:+UseLWPSynchronization


Use LWP-based instead of thread based synchronization. (Introduced in 1.4.0. Relevant to Solaris only.)


-XX:-UseParallelGC


Use parallel garbage collection for scavenges. (Introduced in 1.4.1)


-XX:-UseParallelOldGC


Use parallel garbage collection for the full collections. Enabling this option automatically sets -XX:+UseParallelGC. (Introduced in 5.0 update 6.)


-XX:-UseSerialGC


Use serial garbage collection. (Introduced in 5.0.)


-XX:-UseSpinning


Enable naive spinning on Java monitor before entering operating system thread synchronizaton code. (Relevant to 1.4.2 and 5.0 only.) [1.4.2, multi-processor Windows platforms: true]


-XX:+UseTLAB


Use thread-local object allocation (Introduced in 1.4.0, known as UseTLE prior to that.) [1.4.2 and earlier, x86 or with -client: false]


-XX:+UseSplitVerifier


Use the new type checker with StackMapTable attributes. (Introduced in 5.0.)[5.0: false]


-XX:+UseThreadPriorities


Use native thread priorities.


-XX:+UseVMInterruptibleIO


Thread interrupt before or with EINTR for I/O operations results in OS_INTRPT. (Introduced in 6. Relevant to Solaris only.)

Garbage First (G1) Garbage Collection Options


Option and Default Value


Description


-XX:+UseG1GC


Use the Garbage First (G1) Collector


-XX:MaxGCPauseMillis=n


Sets a target for the maximum GC pause time. This is a soft goal, and the JVM will make its best effort to achieve it.


-XX:InitiatingHeapOccupancyPercent=n


Percentage of the (entire) heap occupancy to start a concurrent GC cycle. It is used by GCs that trigger a concurrent GC cycle based on the occupancy of the entire heap, not just one of the generations (e.g., G1). A value of 0 denotes ‘do constant GC cycles‘. The default value is 45.


-XX:NewRatio=n


Ratio of old/new generation sizes. The default value is 2.


-XX:SurvivorRatio=n


Ratio of eden/survivor space size. The default value is 8.


-XX:MaxTenuringThreshold=n


Maximum value for tenuring threshold. The default value is 15.


-XX:ParallelGCThreads=n


Sets the number of threads used during parallel phases of the garbage collectors. The default value varies with the platform on which the JVM is running.


-XX:ConcGCThreads=n


Number of threads concurrent garbage collectors will use. The default value varies with the platform on which the JVM is running.


-XX:G1ReservePercent=n


Sets the amount of heap that is reserved as a false ceiling to reduce the possibility of promotion failure. The default value is 10.


-XX:G1HeapRegionSize=n


With G1 the Java heap is subdivided into uniformly sized regions. This sets the size of the individual sub-divisions. The default value of this parameter is determined ergonomically based upon heap size. The minimum value is 1Mb and the maximum value is 32Mb.

Performance Options


Option and Default Value


Description


-XX:+AggressiveOpts


Turn on point performance compiler optimizations that are expected to be default in upcoming releases. (Introduced in 5.0 update 6.)


-XX:CompileThreshold=10000


Number of method invocations/branches before compiling [-client: 1,500]


-XX:LargePageSizeInBytes=4m


Sets the large page size used for the Java heap. (Introduced in 1.4.0 update 1.) [amd64: 2m.]


-XX:MaxHeapFreeRatio=70


Maximum percentage of heap free after GC to avoid shrinking.


-XX:MaxNewSize=size


Maximum size of new generation (in bytes). Since 1.4, MaxNewSize is computed as a function of NewRatio. [1.3.1 Sparc: 32m; 1.3.1 x86: 2.5m.]


-XX:MaxPermSize=64m


Size of the Permanent Generation.  [5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.]


-XX:MinHeapFreeRatio=40


Minimum percentage of heap free after GC to avoid expansion.


-XX:NewRatio=2


Ratio of old/new generation sizes. [Sparc -client: 8; x86 -server: 8; x86 -client: 12.]-client: 4 (1.3) 8 (1.3.1+), x86: 12]


-XX:NewSize=2m


Default size of new generation (in bytes) [5.0 and newer: 64 bit VMs are scaled 30% larger; x86: 1m; x86, 5.0 and older: 640k]


-XX:ReservedCodeCacheSize=32m


Reserved code cache size (in bytes) - maximum code cache size. [Solaris 64-bit, amd64, and -server x86: 2048m; in 1.5.0_06 and earlier, Solaris 64-bit and amd64: 1024m.]


-XX:SurvivorRatio=8


Ratio of eden/survivor space size [Solaris amd64: 6; Sparc in 1.3.1: 25; other Solaris platforms in 5.0 and earlier: 32]


-XX:TargetSurvivorRatio=50


Desired percentage of survivor space used after scavenge.


-XX:ThreadStackSize=512


Thread Stack Size (in Kbytes). (0 means use default stack size) [Sparc: 512; Solaris x86: 320 (was 256 prior in 5.0 and earlier); Sparc 64 bit: 1024; Linux amd64: 1024 (was 0 in 5.0 and earlier); all others 0.]


-XX:+UseBiasedLocking


Enable biased locking. For more details, see thistuning example. (Introduced in 5.0 update 6.) [5.0: false]


-XX:+UseFastAccessorMethods


Use optimized versions of Get<Primitive>Field.


-XX:-UseISM


Use Intimate Shared Memory. [Not accepted for non-Solaris platforms.] For details, see Intimate Shared Memory.


-XX:+UseLargePages


Use large page memory. (Introduced in 5.0 update 5.) For details, see Java Support for Large Memory Pages.


-XX:+UseMPSS


Use Multiple Page Size Support w/4mb pages for the heap. Do not use with ISM as this replaces the need for ISM. (Introduced in 1.4.0 update 1, Relevant to Solaris 9 and newer.) [1.4.1 and earlier: false]


-XX:+UseStringCache


Enables caching of commonly allocated strings.


-XX:AllocatePrefetchLines=1


Number of cache lines to load after the last object allocation using prefetch instructions generated in JIT compiled code. Default values are 1 if the last allocated object was an instance and 3 if it was an array.


-XX:AllocatePrefetchStyle=1


Generated code style for prefetch instructions.
0 - no prefetch instructions are generate*d*,
1 - execute prefetch instructions after each allocation,
2 - use TLAB allocation watermark pointer to gate when prefetch instructions are executed.


-XX:+UseCompressedStrings


Use a byte[] for Strings which can be represented as pure ASCII. (Introduced in Java 6 Update 21 Performance Release)


-XX:+OptimizeStringConcat


Optimize String concatenation operations where possible. (Introduced in Java 6 Update 20)

Debugging Options


Option and Default Value


Description


-XX:-CITime


Prints time spent in JIT Compiler. (Introduced in 1.4.0.)


-XX:ErrorFile=./hs_err_pid<pid>.log


If an error occurs, save the error data to this file. (Introduced in 6.)


-XX:-ExtendedDTraceProbes


Enable performance-impacting dtrace probes. (Introduced in 6. Relevant to Solaris only.)


-XX:HeapDumpPath=./java_pid<pid>.hprof


Path to directory or filename for heap dump.Manageable. (Introduced in 1.4.2 update 12, 5.0 update 7.)


-XX:-HeapDumpOnOutOfMemoryError


Dump heap to file when java.lang.OutOfMemoryError is thrown. Manageable. (Introduced in 1.4.2 update 12, 5.0 update 7.)


-XX:OnError="<cmd args>;<cmd args>"


Run user-defined commands on fatal error. (Introduced in 1.4.2 update 9.)


-XX:OnOutOfMemoryError="<cmd args>; 
<cmd args>"


Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6)


-XX:-PrintClassHistogram


Print a histogram of class instances on Ctrl-Break.Manageable. (Introduced in 1.4.2.) The jmap -histocommand provides equivalent functionality.


-XX:-PrintConcurrentLocks


Print java.util.concurrent locks in Ctrl-Break thread dump. Manageable. (Introduced in 6.) The jstack -lcommand provides equivalent functionality.


-XX:-PrintCommandLineFlags


Print flags that appeared on the command line. (Introduced in 5.0.)


-XX:-PrintCompilation


Print message when a method is compiled.


-XX:-PrintGC


Print messages at garbage collection. Manageable.


-XX:-PrintGCDetails


Print more details at garbage collection.Manageable. (Introduced in 1.4.0.)


-XX:-PrintGCTimeStamps


Print timestamps at garbage collection. Manageable(Introduced in 1.4.0.)


-XX:-PrintTenuringDistribution


Print tenuring age information.


-XX:-PrintAdaptiveSizePolicy


Enables printing of information about adaptive generation sizing.


-XX:-TraceClassLoading


Trace loading of classes.


-XX:-TraceClassLoadingPreorder


Trace all classes loaded in order referenced (not loaded). (Introduced in 1.4.2.)


-XX:-TraceClassResolution


Trace constant pool resolutions. (Introduced in 1.4.2.)


-XX:-TraceClassUnloading


Trace unloading of classes.


-XX:-TraceLoaderConstraints


Trace recording of loader constraints. (Introduced in 6.)


-XX:+PerfDataSaveToFile


Saves jvmstat binary data on exit.


-XX:ParallelGCThreads=n


Sets the number of garbage collection threads in the young and old parallel garbage collectors. The default value varies with the platform on which the JVM is running.


-XX:+UseCompressedOops


Enables the use of compressed pointers (object references represented as 32 bit offsets instead of 64-bit pointers) for optimized 64-bit performance with Java heap sizes less than 32gb.


-XX:+AlwaysPreTouch


Pre-touch the Java heap during JVM initialization. Every page of the heap is thus demand-zeroed during initialization rather than incrementally during application execution.


-XX:AllocatePrefetchDistance=n


Sets the prefetch distance for object allocation. Memory about to be written with the value of new objects is prefetched into cache at this distance (in bytes) beyond the address of the last allocated object. Each Java thread has its own allocation point. The default value varies with the platform on which the JVM is running.


-XX:InlineSmallCode=n


Inline a previously compiled method only if its generated native code size is less than this. The default value varies with the platform on which the JVM is running.


-XX:MaxInlineSize=35


Maximum bytecode size of a method to be inlined.


-XX:FreqInlineSize=n


Maximum bytecode size of a frequently executed method to be inlined. The default value varies with the platform on which the JVM is running.


-XX:LoopUnrollLimit=n


Unroll loop bodies with server compiler intermediate representation node count less than this value. The limit used by the server compiler is a function of this value, not the actual value. The default value varies with the platform on which the JVM is running.


-XX:InitialTenuringThreshold=7


Sets the initial tenuring threshold for use in adaptive GC sizing in the parallel young collector. The tenuring threshold is the number of times an object survives a young collection before being promoted to the old, or tenured, generation.


-XX:MaxTenuringThreshold=n


Sets the maximum tenuring threshold for use in adaptive GC sizing. The current largest value is 15. The default value is 15 for the parallel collector and is 4 for CMS.


-Xloggc:<filename>


Log GC verbose output to specified file. The verbose output is controlled by the normal verbose GC flags.


-XX:-UseGCLogFileRotation


Enabled GC log rotation, requires -Xloggc.


-XX:NumberOfGClogFiles=1


Set the number of files to use when rotating logs, must be >= 1. The rotated log files will use the following naming scheme, <filename>.0, <filename>.1, ..., <filename>.n-1.


-XX:GCLogFileSize=8K


The size of the log file at which point the log will be rotated, must be >= 8K.

========官方文档========

时间: 2024-10-03 21:56:09

java虚拟机启动参数的相关文章

java虚拟机启动参数分类详解

官方文档见: http://docs.sun.com/source/819-0084/pt_tuningjava.html java启动参数共分为三类:其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容:其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用: 一.标准参数中比较有用的: verbose -verbo

java 虚拟机启动参数 (转)

在Java.J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能. JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置.但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能. 另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都见过“OutOfMemory”类型的错误.呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的. 为了说明这些参数,还需要说说JDK中的命令行工具

android studio 启动android device monitor 报java虚拟机启动失败

在使用android studio 启动android device monitor 观察log日志的时候时常会报java虚拟机启动失败, 在网上找了好久,最后在知乎回答上得到了解决方案.记录一下,方便以后查看也希望可以帮到大家! 先把错误图片放上来吧. 出现这种情况我猜应该是启动内存不够了,当然如果你是8g应该就不会存在这个问题了. 如果出现了这个问题怎么解决呢.很简单找到sdk目录下的tools\lib\monitor-x86目录下 有个monitor.ini用记事本将其打开,在最后一下几个

java程序启动参数-D是用来做什么的?

java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes: java -Dfoo="some string" SomeClass 也就是说-D是用来在启动一个java程序时设置系统属性值的.如果该值是一个字符串且包含空格,那么需要包在一对双引号中

Java虚拟机配置参数(目前不够完善)

最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:PermSize和-XX:MaxPermSize--->设置方法区大小 -Xoss--->设置本地方法栈大小 -XX:+HeapDumpOnOutOfMemoryError--->生成内存溢出快照(查看内存溢出快照的工具,安装JDK时,有自带了几种工具,具体怎么使用百度.谷歌) -XX:+/-Use

java程序启动参数-D含义详解

-D<name>=<value>  :  set a system property  设置系统属性. 官方解释: Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes: 1.java -D参数简化加入多个jar java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时什么烦要一个个写

不错的linux下通用的java程序启动脚本(转载)

转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用来做起动脚本了. 并且除了能起动.还支持关闭.重启.查看是否正在运行的功能. 原文地址:http://www.tudaxia.com/archives/10 start函数中,nohup部分其实也

不错的linux下通用的java程序启动脚本

虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用来做起动脚本了. 并且除了能起动.还支持关闭.重启.查看是否正在运行的功能. 原文地址:http://www.tudaxia.com/archives/10 start函数中,nohup部分其实也可以提出来放入一个配置变量中.这里没有修改直接贴上作者的原文 #!/bin/sh #该脚本为Linux下

深入理解Java虚拟机-常用vm参数分析

Java虚拟机深入理解系列全部文章更新中... 深入理解Java虚拟机-Java内存区域透彻分析 深入理解Java虚拟机-常用vm参数分析 深入理解Java虚拟机-JVM内存分配与回收策略原理,从此告别JVM内存分配文盲 深入理解Java虚拟机-如何利用JDK自带的命令行工具监控上百万的高并发的虚拟机性能 深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析 深入理解Java虚拟机-你了解GC算法原理吗 话不多说,今天就分析一下一些常用的Java虚拟机的参数设置,以及如何更好