- 浏览: 382853 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lhbthanks:
楼主写的很多,也很实用,要是再增加一些描述就会更好了。
oracle 用户 从一个表空间 另一个表空间 -
wuhuajun:
private int _connectionMax = 51 ...
resin jboss 最大连接数设置 -
shixiaomu:
自己丁丁丁一下 学了忘忘了再学。。主要是应用场景太少
python -
shixiaomu:
我自己有了方案了java+rabbitmq_server-2. ...
hadoop hive zookeeper 还不够 -
shixiaomu:
看到这个帖子 羞愧极了 ,原来 我 09 年就想学 pytho ...
python
1.JVM 加启动参数 -Xloggc:<file>;如在TOMCAT启动时加此参数;<file>为输出日志名,如 -Xloggc:derek.vgc
export JAVA_HOME="/opt/java"
export CATALINA_OPTS="-Xms512m -Xmx1024m -Xloggc:derek.vgc -Dorg.apache.tapestry.607-patch=true -XX:+HeapDumpOnOutOfMemoryError -XX:-PrintGC"
<Connector port="666" maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="400" maxSpareThreads="300"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="UTF-8"/>
三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
● For AS Java
You need to use the Config Tool to set the JVM parameter:
-XX:+HeapDumpOnOutOfMemoryError
The heap dump is written to:
<j2ee instance>\j2ee\cluster\server<node>\java_pid<pid>.hprof
● For other applications
Set the following JVM parameter:
-XX:+HeapDumpOnOutOfMemoryError
The heap dump is written to the working directory
VMFlags
When it comes to garbage collector and memory flags VMs from different vendors differ somewhat. Most flags aren't even properly documented by the usage printout of the VM themselves. This page tries to shine some light on what garbage collection related flags there are and what they are good for. It covers several Sun and IBM JVMs
Sun JVMs
Disclaimer: Please note that the data presented in this document has been gathered from several publicly available sources. It is a conscious selection of available VM parameters and even though we tried to check most of the facts presented this document may contain errors.
Choosing a VM
-server
Instructs the VM to use the server HotSpot VM. This also implies that default heap sizes and permanent generation sizes are different.
Under 1.5 this option is the default option, if the machine is a server-class machine.
Supported by: 1.3, 1.4, 1.5
-client
Instructs the VM to use the client HotSpot VM. This also implies that default heap sizes and permanent generation sizes are different.
Supported by: 1.3, 1.4, 1.5
Printing Information about GC
-verbose:gc
Prints out information about garbage collections to standard out. To print the same information to a file, use -Xloggc:<file>
Example:
[GC 325407K->83000K(776768K), 0.2300771 secs]
[GC 325816K->83372K(776768K), 0.2454258 secs]
[Full GC 267628K->83769K(776768K), 1.8479984 secs]
See -Xloggc
Supported by: 1.3, 1.4, 1.5
-Xloggc:<file>
Prints information about garbage collections to the specified file.
In conjunction with -XX:+PrintGCDetails this is the best setting for the free GCViewer.
Supported by: 1.4, 1.5
-XX:+PrintGCDetails
Instructs the VM to be more verbose when printing out garbage collecion data. Specifically it does not only tell you that there was a collection, but also what impact it had on the different generations.
This flag is very useful when tuning generation sizes.
In conjunction with -Xloggc this is the best setting for the free GCViewer.
Example:
2.459: [GC 2.459: [DefNew: 3967K->0K(4032K), 0.0141600 secs] 8559K->7454K(16320K), 0.0143588 secs]
Supported by: 1.4, 1.5
-XX:+PrintGCApplicationStoppedTime
Instructs the VM to print out the length of actual collection pauses.
This flag is useful when tuning concurrent collectors.
Example:
Total time for which application threads were stopped: 0.0468229 seconds
Supported by: 1.4, 1.5
-XX:+PrintGCApplicationConcurrentTime
Instructs the VM to print out the amount of time the applications runs between collection pauses.
This flag is useful when tuning concurrent collectors.
Example:
Application time: 0.5291524 seconds
Supported by: 1.4, 1.5
-XX:+PrintGCTimeStamps
Ensures that timestamps relative to the start of the application are printed in the GC log.
Supported by: 1.4, 1.5
-XX:+PrintTenuringDistribution
Prints details about the tenuring distribution to standard out. It can be used to show this threshold and the ages of objects in the new generation. It is also useful for observing the lifetime distribution of an application.
Example:
5.350: [GC Desired survivor size 32768 bytes, new threshold 1 (max 31)
- age 1: 57984 bytes, 57984 total
- age 2: 7552 bytes, 65536 total
756K->455K(1984K), 0.0097436 secs]
Supported by: 1.3, 1.4, 1.5
Sizing Heap and Generations
-Xmx<value>
Overall maximum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the maximum heap size to 256mb Supported by: 1.3, 1.4, 1.5
-Xms<value>
Minimum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xms256m sets the minimum heap size to 256mb Supported by: 1.3, 1.4, 1.5
-Xmn<value>
Sets the size of the young generation. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmn64m sets the young generation size to 64mb Supported by: 1.4, 1.5
-XX:MinHeapFreeRatio=<minimumInPercent>
Sets the minimal percentage of free heap memory that has to be available after a collection. This parameter can be used to influence when the VM is going to request more memory.
Example: -XX:MinHeapFreeRatio=70 See -XX:MaxHeapFreeRatio
Supported by: 1.3, 1.4, 1.5
-XX:MaxHeapFreeRatio=<maximumInPercent>
Sets the maximal percentage of free heap memory that must at most be available after a collection. This parameter can be used to influence when the VM is going to lower its footprint. In other words it can shrink the heap and therefore memory consumption.
Example: -XX:MaxHeapFreeRatio=20 See -XX:MinHeapFreeRatio
Supported by: 1.3, 1.4, 1.5
-XX:NewRatio=<ratio>
Sets the ratio between young and old generation.
Example: -XX:NewRatio=3 means that the ratio between the young and old generation is 1:3; in other words, the combined size of eden and the survivor spaces will be one fourth of the heap. See -XX:NewSize and -XX:MaxNewSize
Supported by: 1.3, 1.4, 1.5
-XX:NewSize=<value>
Sets minimum size of the young generation.
Example: -XX:NewSize=64m sets the minimum size of the young generation to 64mb See -XX:NewRatio and -XX:MaxNewSize
Supported by: 1.3, 1.4, 1.5
-XX:MaxNewSize=<value>
Sets maximum size of the young generation.
Example: -XX:NewSize=64m sets the maximum size of the young generation to 64mb See -XX:NewRatio and -XX:NewSize
Supported by: 1.3, 1.4, 1.5
-XX:SurvivorRatio=<ratio>
Sets size of the survivor spaces in relation to eden.
Example: -XX:SurvivorRatio=6 sets the ratio between each survivor space and eden to be 1:6; in other words, each survivor space will be one eighth of the young generation (not one seventh, because there are two survivor spaces). Supported by: 1.3, 1.4, 1.5
-XX:PermSize=<value>
Sets the initial size of the permanent generation (where classes etc. are stored). This can be useful for application servers using many EJBs and JSPs.
Example: -XX:PermSize=64m See -XX:MaxPermSize
Supported by: 1.3, 1.4, 1.5
-XX:MaxPermSize=<value>
Sets the maximum size of the permanent generation (where classes etc. are stored). This can be useful for application servers using many EJBs and JSPs.
Example: -XX:MaxPermSize=64m See -XX:PermSize
Supported by: 1.3, 1.4, 1.5
Choosing and Configuring a Collector
-XX:+UseParallelGC
Use parallel garbage collection. This collector is also referred to as the throughput collector. It uses a parallel version of the young generation collector. The old (tenured) generation is still cleaned with the default collector.
Under 1.5 this option is the default option, if the machine is a server-class machine.
This option can not be used in conjunction with -XX:+UseConcMarkSweepGC.
Supported by: 1.4.1, 1.5
-XX:+UseParallelOldGC
Use the parallel old generation collector. Certain phases of an old generation collection can be performed in parallel, speeding up an old generation collection.
This option automatically enables -XX:+UseParallelGC.
Supported by: 1.5.0.6
-XX:ParallelGCThreads=<number>
Specifies the number of threads used in parallel garbage collection when -XX:+UseParallelGC is set. By default a system with N CPUs uses N garbage collection threads.
Example: -XX:ParallelGCThreads=4 Supported by: 1.4.1, 1.5
-XX:MaxGCPauseMillis=<ms>
Instructs the VM to try to keep garbage collection pauses shorter than the specified value in ms.
This option applies in conjunction with -XX:+UseParallelGC and has higher priority than -XX:GCTimeRatio.
Example: -XX:MaxGCPauseMillis=10 Supported by: 1.5
-XX:GCTimeRatio=<ratio>
Sets a throughput goal for the VM. The ratio of garbage collection time to application time is 1/(1+<ratio>).
This option applies in conjunction with -XX:+UseParallelGC and has lower priority than -XX:MaxGCPauseMillis.
Example: -XX:GCTimeRatio=19 sets a goal of 5% of the total time for garbage collection. Supported by: 1.5
-XX:+UseAdaptiveSizePolicy
Instructs the VM to keep track of some statistics and resize both the young and the old (tenured) generation based on the collected data.
This feature is on by default when the option -XX:+UseParallelGC is used.
Supported by: 1.4.1, 1.5
-XX:+AggressiveHeap
Instructs the JVM to push memory use to the limit. It inspects the machine resources (size of memory and number of processors) and attempts to set various parameters to be optimal for long-running, memory allocation-intensive jobs. This option is recommended for dedicated server machines.
The physical memory on the machines must be at least 256MB before AggressiveHeap can be used.
Beginning with JVM 1.3.1_02 some GC activity is done in parallel.
Beginning with JVM 1.4 this option implies -XX:+UseParallelGC and -XX:+UseAdaptiveSizePolicy.
Supported by: 1.3, 1.4, 1.5
-XX:+UseConcMarkSweepGC
Use concurrent garbage collection. This collector is also referred to as the concurrent low pause collector. It collects garbage in the old (tenured) generation concurrently to executing the application.
Note that this option can not be used in conjunction with -XX:+UseParallelGC. Instead you may combine it with -XX:+UseParNewGC
Supported by: 1.4.1, 1.5
-XX:+CMSParallelRemarkEnabled
If the -XX:+UseParNewGC option is in use the remark pauses may be decreased with the -XX:+CMSParallelRemarkEnabled option.
Supported by: 1.4.1, 1.5
-XX:+UseParNewGC
Instructs the VM to use a parallel collector for the young generation. This option should be used in conjunction with -XX:+UseConcMarkSweepGC.
Supported by: 1.4.1, 1.5
-XX:+UseTrainGC
Activates the train garbage collector. Note that development for this collector has been stopped since 1.4.2.
See -Xincgc
Supported by: 1.3, 1.4, 1.5
-Xincgc
Activates the incremental (also called train) garbage collector.
See -XX:+UseTrainGC
Supported by: 1.3, 1.4, 1.5
Miscellaneous Settings
-Xss<value>
Sets the size of the stack. In a server system with many threads lowering the stack size may be advantageous to reduce footprint. If the stack is too small, you will start seeing StackOverflowErrors.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xss128k sets the stack size to 128kb Supported by: 1.3, 1.4, 1.5
-XX:+DisableExplicitGC
Disables calls to java.lang.System.gc().
-XX:SoftRefLRUPolicyMSPerMB=<ms per mb>
Sets the rate at which the VM clears soft references. The rate is expressed in ms per free mb of heap. For the server VM free heap means potentially free heap using the maximum heap size as set with -Xmx in the calculation. For the client VM the free heap is calculated using the actual current heap size.
Example: -XX:SoftRefLRUPolicyMSPerMB=1000 instructs the VM to allow softly reachable objects to remain alive for 1s per free mb Supported by: 1.3.1, 1.4, 1.5
Server-Class Machine
Java 5.0 (1.5) defines a class of machines referred to as server-class machines. These are machines that have 2 or more physical processors and 2 or more gb of physical memory. On server-class machines the Sun JVM starts with altered default settings. These are:
-server -XX:+UseParallelGC
Additionally the initial heap size (-Xms) is set to 1/64 of the physical memory, up to 1gb. The maximum heap size (-Xmx) is set to 1/4 of the physical memory, up to 1gb.
Note that on server-class 32bit-Windows systems the VM will nevertheless start with the classic client settings, as most 32bit-Windows Java applications are not server applications.
IBM JVMs
Disclaimer: Please note that the data presented in this document has been gathered from several publicly available sources. It is a conscious selection of available VM parameters and even though we tried to check most of the facts presented this document may contain errors. Also note that the semantics of some of these parameters are different when used with IBM's resettable JVM for the z/OS platform.
Printing Information about GC
-verbose:gc
Prints out information about garbage collections to standard out.
See -Xverbosegclog
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xverbosegclog:<path to file><filename[,X,Y]>
Prints out information about garbage collections to a file. If the integers X and Y are specified, the output is redirected to X files each containing output from Y GC cycles.
See -verbose:gc
Supported by: 1.4.1, 1.4.2
Sizing Heap and Generations
-Xmx<value>
Overall maximum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the maximum heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xms<value>
Overall minimum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the minimum heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xinitsh<value>
Sets the initial size of the system heap. Classes in this heap exist for the lifetime of the JVM. The system heap is never subjected to garbage collection. The maximum size of the system heap is unbounded. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xinitsh256m sets the minimum system heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xmaxf<value>
This is a floating point number between 0 and 1, which specifies the maximum percentage of free space in the heap. The default is 0.6, or 60%. When this value is set to 0, heap contraction is a constant activity. With a value of 1, the heap never contracts. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmaxf0.6 specifies that the heap will be contracted if more then 60% of the heap are unused. Supported by: 1.3.1, 1.4.1, 1.4.2
-Xminf<value>
This is a floating point number between 0 and 1, which specifies the minimum percentage of free space in the heap. The default is 0.3, or 30%. The heap grows if the free space is below the specified amount. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xminf0.3 specifies that the heap will be grown if less then 30% of the heap are unused. Supported by: 1.3.1, 1.4.1, 1.4.2
Choosing and Configuring a Collector
-Xgcpolicy:<optthruput|optavgpause|subpool>
Note that the subpool option was introduced in Version 1.4.1 Service Refresh 1 for AIX only.
Setting gcpolicy to optthruput disables concurrent mark. If you do not have pause time problems (as seen by erratic application response times or by analysis of the verbose GC output), you should get the best throughput with this option. optthruput is the default setting.
Setting gcpolicy to optavgpause enables concurrent mark with its default values. If you are having problems with erratic application response times that are caused by normal garbage collections, you can remove those problems at the cost of some throughput when running with the optavgpause option.
Setting gcpolicy to subpool enables improved object allocation that aims to achieve better performance in allocating objects on the heap. This setting might provide additional throughput optimization because it can improve the efficiency of object allocation and reduce lock contention on large SMP systems. Concurrent mark is disabled when this policy is enabled.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xgcthreads<n>
Sets the total number of threads that are used for garbage collection. On a system with n processors, the default setting is n.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xcompactgc
Compacts the heap every garbage collection cycle. The default is false (that is, the heap is not compacted). This is not recommended.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xnocompactgc
Never compact the heap. Default is false.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xnoclassgc
Disables class garbage collection.
Supported by: 1.3.1, 1.4.1, 1.4.2
Miscellaneous Settings
-Xss<value>
Sets maximum native stack size for any thread.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xss128k sets the stack size to 128kb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xoss<value>
Sets maximum Java stack size for any thread.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xoss128k sets the stack size to 128kb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xcompactexplicitgc
Runs full compaction each time java.lang.System.gc() is called. Its default behavior with a java.lang.System.gc() call is to perform a compaction only if an allocation failure triggered a garbage collection since the last java.lang.System.gc() call.
Supported by: 1.4.1, 1.4.2
-Xnocompactexplicitgc
Never runs compaction when java.lang.System.gc() is called. Its default behavior with a java.lang.System.gc() call is to perform a compaction only if an allocation failure triggered a garbage collection since the last java.lang.System.gc() call.
Supported by: 1.4.1, 1.4.2
-Xdisableexplicitgc
Converts Java application calls to java.lang.System.gc() into no-ops.
Supported by: 1.4.1, 1.4.2
export JAVA_HOME="/opt/java"
export CATALINA_OPTS="-Xms512m -Xmx1024m -Xloggc:derek.vgc -Dorg.apache.tapestry.607-patch=true -XX:+HeapDumpOnOutOfMemoryError -XX:-PrintGC"
<Connector port="666" maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="400" maxSpareThreads="300"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="UTF-8"/>
三、实例,以下给出1G内存环境下java jvm 的参数设置参考:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
● For AS Java
You need to use the Config Tool to set the JVM parameter:
-XX:+HeapDumpOnOutOfMemoryError
The heap dump is written to:
<j2ee instance>\j2ee\cluster\server<node>\java_pid<pid>.hprof
● For other applications
Set the following JVM parameter:
-XX:+HeapDumpOnOutOfMemoryError
The heap dump is written to the working directory
VMFlags
When it comes to garbage collector and memory flags VMs from different vendors differ somewhat. Most flags aren't even properly documented by the usage printout of the VM themselves. This page tries to shine some light on what garbage collection related flags there are and what they are good for. It covers several Sun and IBM JVMs
Sun JVMs
Disclaimer: Please note that the data presented in this document has been gathered from several publicly available sources. It is a conscious selection of available VM parameters and even though we tried to check most of the facts presented this document may contain errors.
Choosing a VM
-server
Instructs the VM to use the server HotSpot VM. This also implies that default heap sizes and permanent generation sizes are different.
Under 1.5 this option is the default option, if the machine is a server-class machine.
Supported by: 1.3, 1.4, 1.5
-client
Instructs the VM to use the client HotSpot VM. This also implies that default heap sizes and permanent generation sizes are different.
Supported by: 1.3, 1.4, 1.5
Printing Information about GC
-verbose:gc
Prints out information about garbage collections to standard out. To print the same information to a file, use -Xloggc:<file>
Example:
[GC 325407K->83000K(776768K), 0.2300771 secs]
[GC 325816K->83372K(776768K), 0.2454258 secs]
[Full GC 267628K->83769K(776768K), 1.8479984 secs]
See -Xloggc
Supported by: 1.3, 1.4, 1.5
-Xloggc:<file>
Prints information about garbage collections to the specified file.
In conjunction with -XX:+PrintGCDetails this is the best setting for the free GCViewer.
Supported by: 1.4, 1.5
-XX:+PrintGCDetails
Instructs the VM to be more verbose when printing out garbage collecion data. Specifically it does not only tell you that there was a collection, but also what impact it had on the different generations.
This flag is very useful when tuning generation sizes.
In conjunction with -Xloggc this is the best setting for the free GCViewer.
Example:
2.459: [GC 2.459: [DefNew: 3967K->0K(4032K), 0.0141600 secs] 8559K->7454K(16320K), 0.0143588 secs]
Supported by: 1.4, 1.5
-XX:+PrintGCApplicationStoppedTime
Instructs the VM to print out the length of actual collection pauses.
This flag is useful when tuning concurrent collectors.
Example:
Total time for which application threads were stopped: 0.0468229 seconds
Supported by: 1.4, 1.5
-XX:+PrintGCApplicationConcurrentTime
Instructs the VM to print out the amount of time the applications runs between collection pauses.
This flag is useful when tuning concurrent collectors.
Example:
Application time: 0.5291524 seconds
Supported by: 1.4, 1.5
-XX:+PrintGCTimeStamps
Ensures that timestamps relative to the start of the application are printed in the GC log.
Supported by: 1.4, 1.5
-XX:+PrintTenuringDistribution
Prints details about the tenuring distribution to standard out. It can be used to show this threshold and the ages of objects in the new generation. It is also useful for observing the lifetime distribution of an application.
Example:
5.350: [GC Desired survivor size 32768 bytes, new threshold 1 (max 31)
- age 1: 57984 bytes, 57984 total
- age 2: 7552 bytes, 65536 total
756K->455K(1984K), 0.0097436 secs]
Supported by: 1.3, 1.4, 1.5
Sizing Heap and Generations
-Xmx<value>
Overall maximum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the maximum heap size to 256mb Supported by: 1.3, 1.4, 1.5
-Xms<value>
Minimum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xms256m sets the minimum heap size to 256mb Supported by: 1.3, 1.4, 1.5
-Xmn<value>
Sets the size of the young generation. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmn64m sets the young generation size to 64mb Supported by: 1.4, 1.5
-XX:MinHeapFreeRatio=<minimumInPercent>
Sets the minimal percentage of free heap memory that has to be available after a collection. This parameter can be used to influence when the VM is going to request more memory.
Example: -XX:MinHeapFreeRatio=70 See -XX:MaxHeapFreeRatio
Supported by: 1.3, 1.4, 1.5
-XX:MaxHeapFreeRatio=<maximumInPercent>
Sets the maximal percentage of free heap memory that must at most be available after a collection. This parameter can be used to influence when the VM is going to lower its footprint. In other words it can shrink the heap and therefore memory consumption.
Example: -XX:MaxHeapFreeRatio=20 See -XX:MinHeapFreeRatio
Supported by: 1.3, 1.4, 1.5
-XX:NewRatio=<ratio>
Sets the ratio between young and old generation.
Example: -XX:NewRatio=3 means that the ratio between the young and old generation is 1:3; in other words, the combined size of eden and the survivor spaces will be one fourth of the heap. See -XX:NewSize and -XX:MaxNewSize
Supported by: 1.3, 1.4, 1.5
-XX:NewSize=<value>
Sets minimum size of the young generation.
Example: -XX:NewSize=64m sets the minimum size of the young generation to 64mb See -XX:NewRatio and -XX:MaxNewSize
Supported by: 1.3, 1.4, 1.5
-XX:MaxNewSize=<value>
Sets maximum size of the young generation.
Example: -XX:NewSize=64m sets the maximum size of the young generation to 64mb See -XX:NewRatio and -XX:NewSize
Supported by: 1.3, 1.4, 1.5
-XX:SurvivorRatio=<ratio>
Sets size of the survivor spaces in relation to eden.
Example: -XX:SurvivorRatio=6 sets the ratio between each survivor space and eden to be 1:6; in other words, each survivor space will be one eighth of the young generation (not one seventh, because there are two survivor spaces). Supported by: 1.3, 1.4, 1.5
-XX:PermSize=<value>
Sets the initial size of the permanent generation (where classes etc. are stored). This can be useful for application servers using many EJBs and JSPs.
Example: -XX:PermSize=64m See -XX:MaxPermSize
Supported by: 1.3, 1.4, 1.5
-XX:MaxPermSize=<value>
Sets the maximum size of the permanent generation (where classes etc. are stored). This can be useful for application servers using many EJBs and JSPs.
Example: -XX:MaxPermSize=64m See -XX:PermSize
Supported by: 1.3, 1.4, 1.5
Choosing and Configuring a Collector
-XX:+UseParallelGC
Use parallel garbage collection. This collector is also referred to as the throughput collector. It uses a parallel version of the young generation collector. The old (tenured) generation is still cleaned with the default collector.
Under 1.5 this option is the default option, if the machine is a server-class machine.
This option can not be used in conjunction with -XX:+UseConcMarkSweepGC.
Supported by: 1.4.1, 1.5
-XX:+UseParallelOldGC
Use the parallel old generation collector. Certain phases of an old generation collection can be performed in parallel, speeding up an old generation collection.
This option automatically enables -XX:+UseParallelGC.
Supported by: 1.5.0.6
-XX:ParallelGCThreads=<number>
Specifies the number of threads used in parallel garbage collection when -XX:+UseParallelGC is set. By default a system with N CPUs uses N garbage collection threads.
Example: -XX:ParallelGCThreads=4 Supported by: 1.4.1, 1.5
-XX:MaxGCPauseMillis=<ms>
Instructs the VM to try to keep garbage collection pauses shorter than the specified value in ms.
This option applies in conjunction with -XX:+UseParallelGC and has higher priority than -XX:GCTimeRatio.
Example: -XX:MaxGCPauseMillis=10 Supported by: 1.5
-XX:GCTimeRatio=<ratio>
Sets a throughput goal for the VM. The ratio of garbage collection time to application time is 1/(1+<ratio>).
This option applies in conjunction with -XX:+UseParallelGC and has lower priority than -XX:MaxGCPauseMillis.
Example: -XX:GCTimeRatio=19 sets a goal of 5% of the total time for garbage collection. Supported by: 1.5
-XX:+UseAdaptiveSizePolicy
Instructs the VM to keep track of some statistics and resize both the young and the old (tenured) generation based on the collected data.
This feature is on by default when the option -XX:+UseParallelGC is used.
Supported by: 1.4.1, 1.5
-XX:+AggressiveHeap
Instructs the JVM to push memory use to the limit. It inspects the machine resources (size of memory and number of processors) and attempts to set various parameters to be optimal for long-running, memory allocation-intensive jobs. This option is recommended for dedicated server machines.
The physical memory on the machines must be at least 256MB before AggressiveHeap can be used.
Beginning with JVM 1.3.1_02 some GC activity is done in parallel.
Beginning with JVM 1.4 this option implies -XX:+UseParallelGC and -XX:+UseAdaptiveSizePolicy.
Supported by: 1.3, 1.4, 1.5
-XX:+UseConcMarkSweepGC
Use concurrent garbage collection. This collector is also referred to as the concurrent low pause collector. It collects garbage in the old (tenured) generation concurrently to executing the application.
Note that this option can not be used in conjunction with -XX:+UseParallelGC. Instead you may combine it with -XX:+UseParNewGC
Supported by: 1.4.1, 1.5
-XX:+CMSParallelRemarkEnabled
If the -XX:+UseParNewGC option is in use the remark pauses may be decreased with the -XX:+CMSParallelRemarkEnabled option.
Supported by: 1.4.1, 1.5
-XX:+UseParNewGC
Instructs the VM to use a parallel collector for the young generation. This option should be used in conjunction with -XX:+UseConcMarkSweepGC.
Supported by: 1.4.1, 1.5
-XX:+UseTrainGC
Activates the train garbage collector. Note that development for this collector has been stopped since 1.4.2.
See -Xincgc
Supported by: 1.3, 1.4, 1.5
-Xincgc
Activates the incremental (also called train) garbage collector.
See -XX:+UseTrainGC
Supported by: 1.3, 1.4, 1.5
Miscellaneous Settings
-Xss<value>
Sets the size of the stack. In a server system with many threads lowering the stack size may be advantageous to reduce footprint. If the stack is too small, you will start seeing StackOverflowErrors.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xss128k sets the stack size to 128kb Supported by: 1.3, 1.4, 1.5
-XX:+DisableExplicitGC
Disables calls to java.lang.System.gc().
-XX:SoftRefLRUPolicyMSPerMB=<ms per mb>
Sets the rate at which the VM clears soft references. The rate is expressed in ms per free mb of heap. For the server VM free heap means potentially free heap using the maximum heap size as set with -Xmx in the calculation. For the client VM the free heap is calculated using the actual current heap size.
Example: -XX:SoftRefLRUPolicyMSPerMB=1000 instructs the VM to allow softly reachable objects to remain alive for 1s per free mb Supported by: 1.3.1, 1.4, 1.5
Server-Class Machine
Java 5.0 (1.5) defines a class of machines referred to as server-class machines. These are machines that have 2 or more physical processors and 2 or more gb of physical memory. On server-class machines the Sun JVM starts with altered default settings. These are:
-server -XX:+UseParallelGC
Additionally the initial heap size (-Xms) is set to 1/64 of the physical memory, up to 1gb. The maximum heap size (-Xmx) is set to 1/4 of the physical memory, up to 1gb.
Note that on server-class 32bit-Windows systems the VM will nevertheless start with the classic client settings, as most 32bit-Windows Java applications are not server applications.
IBM JVMs
Disclaimer: Please note that the data presented in this document has been gathered from several publicly available sources. It is a conscious selection of available VM parameters and even though we tried to check most of the facts presented this document may contain errors. Also note that the semantics of some of these parameters are different when used with IBM's resettable JVM for the z/OS platform.
Printing Information about GC
-verbose:gc
Prints out information about garbage collections to standard out.
See -Xverbosegclog
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xverbosegclog:<path to file><filename[,X,Y]>
Prints out information about garbage collections to a file. If the integers X and Y are specified, the output is redirected to X files each containing output from Y GC cycles.
See -verbose:gc
Supported by: 1.4.1, 1.4.2
Sizing Heap and Generations
-Xmx<value>
Overall maximum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the maximum heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xms<value>
Overall minimum heap size. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmx256m sets the minimum heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xinitsh<value>
Sets the initial size of the system heap. Classes in this heap exist for the lifetime of the JVM. The system heap is never subjected to garbage collection. The maximum size of the system heap is unbounded. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xinitsh256m sets the minimum system heap size to 256mb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xmaxf<value>
This is a floating point number between 0 and 1, which specifies the maximum percentage of free space in the heap. The default is 0.6, or 60%. When this value is set to 0, heap contraction is a constant activity. With a value of 1, the heap never contracts. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xmaxf0.6 specifies that the heap will be contracted if more then 60% of the heap are unused. Supported by: 1.3.1, 1.4.1, 1.4.2
-Xminf<value>
This is a floating point number between 0 and 1, which specifies the minimum percentage of free space in the heap. The default is 0.3, or 30%. The heap grows if the free space is below the specified amount. You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xminf0.3 specifies that the heap will be grown if less then 30% of the heap are unused. Supported by: 1.3.1, 1.4.1, 1.4.2
Choosing and Configuring a Collector
-Xgcpolicy:<optthruput|optavgpause|subpool>
Note that the subpool option was introduced in Version 1.4.1 Service Refresh 1 for AIX only.
Setting gcpolicy to optthruput disables concurrent mark. If you do not have pause time problems (as seen by erratic application response times or by analysis of the verbose GC output), you should get the best throughput with this option. optthruput is the default setting.
Setting gcpolicy to optavgpause enables concurrent mark with its default values. If you are having problems with erratic application response times that are caused by normal garbage collections, you can remove those problems at the cost of some throughput when running with the optavgpause option.
Setting gcpolicy to subpool enables improved object allocation that aims to achieve better performance in allocating objects on the heap. This setting might provide additional throughput optimization because it can improve the efficiency of object allocation and reduce lock contention on large SMP systems. Concurrent mark is disabled when this policy is enabled.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xgcthreads<n>
Sets the total number of threads that are used for garbage collection. On a system with n processors, the default setting is n.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xcompactgc
Compacts the heap every garbage collection cycle. The default is false (that is, the heap is not compacted). This is not recommended.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xnocompactgc
Never compact the heap. Default is false.
Supported by: 1.3.1, 1.4.1, 1.4.2
-Xnoclassgc
Disables class garbage collection.
Supported by: 1.3.1, 1.4.1, 1.4.2
Miscellaneous Settings
-Xss<value>
Sets maximum native stack size for any thread.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xss128k sets the stack size to 128kb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xoss<value>
Sets maximum Java stack size for any thread.
You may use k, m and g for kilobyte, megabyte and gigabyte.
Example: -Xoss128k sets the stack size to 128kb Supported by: 1.3.1, 1.4.1, 1.4.2
-Xcompactexplicitgc
Runs full compaction each time java.lang.System.gc() is called. Its default behavior with a java.lang.System.gc() call is to perform a compaction only if an allocation failure triggered a garbage collection since the last java.lang.System.gc() call.
Supported by: 1.4.1, 1.4.2
-Xnocompactexplicitgc
Never runs compaction when java.lang.System.gc() is called. Its default behavior with a java.lang.System.gc() call is to perform a compaction only if an allocation failure triggered a garbage collection since the last java.lang.System.gc() call.
Supported by: 1.4.1, 1.4.2
-Xdisableexplicitgc
Converts Java application calls to java.lang.System.gc() into no-ops.
Supported by: 1.4.1, 1.4.2
发表评论
-
左右鞋的java多线程,哪位大师帮忙优化一下?
2015-11-30 16:21 48022个线程 1个打包 1个指挥 20个负责生产左右鞋. ... -
Java内部类的使用小结
2014-05-30 10:00 847内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相 ... -
一种高效无锁内存队列的实现
2013-02-05 18:21 5341Disruptor是LMAX公司开源的一个高效的内存无锁队列 ... -
java io nio 区别和联系.
2013-02-05 18:08 4265IO ... -
IntelliJ
2012-11-19 16:07 816使用了一段时间的Intelli ... -
利用 org.apache.commons.io.FileUtils快速读写文件(转)
2012-11-07 12:25 2922利用 org.apache.commons.io.FileUt ... -
google 集合类 -loadcache-弱引用
2012-10-31 17:45 903google 集合类 l ... -
Shuffle-我能找到的最详细的文档-(转)
2012-09-11 16:02 898MapReduce:详解Shuffle过程 ... -
自动化运维系统雏形
2012-09-07 17:43 995java+python+robbitMQ+subprocess ... -
hadoop-map-reduce执行流程调研报告
2012-08-23 17:02 1229hadoop-map-reduce执行流程调研报告 参与者: ... -
hadoop hive zookeeper 还不够
2012-07-24 18:03 1359hadoop hive zookeeper 还不够 好久不 ... -
java try catchfinaly throws throw return 关系 终于搞明白了.
2012-02-24 01:40 3599package com.easou.cas06proxytes ... -
java-exception in thread “main”java.lang.NoSuchMethodError。
2011-07-15 09:37 988可能出现的情况是:有两个包-一个包里面有类,另一个包里面有部分 ... -
mina的深入学习-未完待续
2011-03-21 22:25 1091想要看懂mina的源代码,需要做一些知识储备. 我大体列一下: ... -
java 多线程 心得 体会
2011-03-03 10:12 1261点解 java 多线程.. 先 ... -
java 多线程模型--Future-原理及初步实现
2011-02-28 16:54 2947整理1: 什么是Future? ... -
java jar包大全.
2011-02-22 10:31 1229maven的另类用法. http://repo1.maven. ... -
程序员的路.....
2011-02-18 11:13 1628关于工作:关于挣钱:关于发展. 我的一些感悟: ... -
linux - resin 至强 参数配置
2011-02-12 10:02 1526/usr/local/vstore/jdk1.6.0_12/b ... -
resin jboss 最大连接数设置
2011-01-04 17:29 4290在近日的测试中发现,无论resin.conf中配置的并发连接数 ...
相关推荐
设置 Tomcat 的 JVM 虚拟机大小 在设置 Tomcat 的 JVM 虚拟机大小中,需要了解 JVM 的基本概念和 Tomcat 的配置文件。下面是相关的知识点: 1. JVM 的基本概念:JVM(Java Virtual Machine)是 Java 程序的运行...
vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机vm wince6.0 虚拟机
Java虚拟机(JVM,Java Virtual Machine)是Java平台的核心组成部分,它负责执行Java程序,为Java代码提供了跨平台的运行环境。Java虚拟机的概念始于Sun Microsystems,现在由Oracle公司继续发展和维护。JVM的设计...
### JVM虚拟机面试题知识点详解 #### 一、JVM运行时内存结构 JVM运行时数据区(Runtime Data Area)主要包括以下几部分: 1. **程序计数器(Program Counter Register)**:是一块较小的内存空间,当前线程所执行的...
最好的虚拟机啊,能安装好多的找做系统。。。。。。。。。。。。。。。。。。。。。。。。
VM安装三台linux虚拟机IP互通配置 如何实现在VM下安装三台虚拟机,并实现三者之间的互通
17年最新稳定版本的routeros 6.39系统,支持VM(vmware虚拟机),L5授权
Java高级面试中,JVM(Java Virtual Machine)虚拟机是一个重要的知识点,它是Java程序运行的基础。JVM有多种实现,其中OpenJDK和Sun JDK是最常见的。OpenJDK是JDK的开源版本,遵循GPL V2协议,允许商业使用,但不...
1. 在 VM 编辑虚拟机设置时,选择 VMnet1。 2. 在 Linux 虚拟机中,执行命令“vi /etc/sysconfig/network-scripts/ifcfg-eth0”,修改 IP 地址,以便与 Windows 主机上的设置相同。 3. 执行命令“service network ...
在IT行业中,虚拟化技术已经变得非常普遍,无论是开发测试环境还是云计算服务,VMware的VM(Virtual Machine)和Microsoft的VPC(Virtual PC)都是常见的虚拟机平台。然而,有时候开发者需要检测程序是否在这些虚拟...
vm7.0虚拟机BIOS,vm7.0虚拟机BIOSvm7.0虚拟机BIOS
* -Xmx512m:设置jvm虚拟机的最大堆大小为512m。 * -XX:MaxPermSize=256m:设置永久代的最大大小为256m。 * -XX:ReservedCodeCacheSize=64m:设置代码缓存的大小为64m。 tomcat的内存配置 tomcat是一个流行的Web...
如何在VM中安装 虚拟机
8. **J9 VM**:IBM的J9虚拟机,是另一种实现JVM的方式,它强调性能和低内存占用,常用于IBM自家的产品和服务。 不同版本的JVM在功能、性能和目标平台上有显著差异,开发者需要根据实际需求选择合适的JVM。例如,...
VM搭建Linux虚拟机的具体教程(保姆级)
这一版本的VM10虚拟机是中文精简版,特别针对中国用户进行了本地化处理,简化了界面和操作流程,使其更适合中文用户使用。 ### 虚拟化技术核心概念 虚拟化技术是通过软件模拟硬件资源,使得多个操作系统可以在同一...
某宝的游戏虚拟机 试了两个游戏 在网上下的不能玩游戏 这个我玩的两个游戏都可以玩 我试的是天龙八部私服 和热血江湖私服都可能玩
### 安装VMware Tools以优化Linux虚拟机用户体验 #### 背景介绍 在使用虚拟化技术时,用户经常会遇到各种操作上的不便,尤其是在Linux虚拟机中使用鼠标时可能会出现移动不便的情况。为了解决这类问题并提高用户体验...
其他实现:BEA公司 JRocket、IBM j9、zing 号称世界最快JVM、taobao.vm。从广义上讲Java,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。