zoukankan      html  css  js  c++  java
  • jvm常用参数

    Jvm常用参数

    Java1.7的jvm参数查看一下官方网站。

    http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

     Java1.8

    http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html

     Hotspotvm知识查看一下官方网站。

    http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html

    1、基本参数

    1.1. -client,-server

    这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能  和内存   管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

    Windows 下默认是 -client ,linux和Solaris下默认是-server。

    1.2. -classpath,-cp

    -classpath告知虚拟机搜索目录名、jar文档名、zip文档名,之间用分号;分隔。

    虚拟机搜索类的方式和顺序:Bootstrap classes,Extension classes,User classes。

    1、Bootstrap 中的路径是虚拟机自带的jar或zip文件;

    2、Extension是位于jrelibext目录下的jar文件;

    3、User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。

    1.3. -D<propertyName>=value

    在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用System.getProperty(“propertyName”)得到value的值。

    2.   扩展参数

    2.1. 堆、栈设置

    -Xms:初始堆大小,默认是物理内存的1/64。默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。例如:-Xms 20m。

    -Xmx:最大堆大小。默认是物理内存的1/4         默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。

    -XX:NewSize=n:设置年轻代大小(初始值)。 例如:-XX:NewSize=100m。

    -XX:MaxNewSize:设置年轻代最大值。

    -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4。

    -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5。

    -XX:PermSize(1.8之后改为MetaspaceSize)   设置持久代(perm gen)初始值,默认是物理内存的1/64。

    -XX:MaxPermSize=n:(1.8之后改为MaxMetaspaceSize)设置最大持久代大小。

    -Xss:每个线程堆栈大小。一般小的应用, 如果栈不是很深, 应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。-Xss is translated in a VM flag named ThreadStackSize”。和-XX:ThreadStackSize 功能一样。

    2.2. 收集器设置

    默认情况下:JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行判断。

    -Xnoclassgc     关闭虚拟机对class的垃圾回收功能。

    2.2.1.   串行收集器

    -XX:+UseSerialGC:设置串行收集器。

    2.2.2.   并行收集器(吞吐量优先)

    -XX:+UseParallelGC:选择垃圾收集器为并行收集器。

    -XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。

    -XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

    -XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间(单位毫秒),如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。

    -XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率等。

    此参数建议使用并行收集器时,一直打开。

    举例:

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC  -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy

    2.2.3.   并发收集器(响应时间优先)

    -XX:+UseParNewGC:设置年轻代为并发收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。

    -XX:+UseConcMarkSweepGC:设置年老代为并发收集。

    -XX:CMSFullGCsBeforeCompaction=n:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此参数设置运行n次FullGC以后对内存空间进行压缩、整理。

    -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除内存碎片。

    -XX:CMSInitiatingOccupancyFraction=70:表示年老代空间到70%时就开始执行CMS,确保年老代有足够的空间接纳来自年轻代的对象。

    -XX:+UseG1GC:使用G1收集器。

    举例:

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5

    2.3. 垃圾回收统计信息

    -XX:+PrintGC

    -XX:+PrintGCDetails

    -XX:+PrintGCTimeStamps

    -Xloggc:filename

  • 相关阅读:
    [BZOJ-1007&洛谷P3194][HNOI2008]水平可见直线--【半平面交(单调栈)】
    [BZOJ-1006&洛谷P3196][HNOI2008]神奇的国度--【图的染色-最大势MCS算法】
    [BZOJ-1005&洛谷P2624][HNOI2008]明明的烦恼-【Purfer序列】py+java
    [BZOJ1211 & 洛谷P2290] [HNOI2004]树的计数-【Purfer序列】py+Java
    【BZOJ-1004&洛谷P1446】[HNOI2008]Cards-置换群(burnside引理|DP)
    POJ-2409 Let it Bead 【置换群-Polya定理】
    Dijkstra--POJ 2502 Subway(求出所有路径再求最短路径)
    二分--LIGHTOJ 1088查找区间(水题)
    二分--1043
    二分---LIGHTOJ 1062
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/6683710.html
Copyright © 2011-2022 走看看