JVM参数

JVM参数

JVM參數類型:

  • 標準參數:所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
  • x參數:默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
  • xx參數:此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
  1. Boolean類型:公式:-XX:+/-某個屬性(+表示開啓,-表示關閉)
  2. 设置类型:公式:-XX: 属性key=属性value //-XX:MetaspaceSize=20m

在命令行查看某个参数值:

  • jps -l 查看运行线程信息获得进程号
  • jinfo -flag PrintGCDetails 进程号:查看PrintGCDetails信息
  • jinfo -flags 进程号:查看进程号的所有参数

查看jvm初始化参数:

  •   -XX:+PrintFlagsInitial (-version)
  •   -XX:+PrintFlagsFinal
  •   -XX:+PrintFlagsFinal -XX:MetaspaceSize=512M(设置本次值)(:=表示被人为或者JVM初始修改过)
  •   -XX:+PrintCommandLineFlags( -XX:+UseParallelGC:默认垃圾回收:使用并行GC)
  1. 串行(SerialGC)是jvm的默认GC方式,一般适用于小型应用和单处理器,算法比较简单,GC效率也较高,但可能会给应用带来停顿;
  2. 并行(ParallelGC)是指GC运行时,对应用程序运行没有影响,GC和app两者的线程在并发执行,这样可以最大限度不影响app的运行;
  3. 并发(ConcMarkSweepGC)是指多个线程并发执行GC,一般适用于多处理器系统中,可以提高GC的效率,但算法复杂,系统消耗较大;
C:\Users\XXX>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=132176320 -XX:MaxHeapSize=2114821120 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

C:\Users\XXX>jps -l
122852 org.jetbrains.jps.cmdline.Launcher
107656
134008 sun.tools.jps.Jps

C:\Users\XXX>jinfo -flag UseParallelGC 122852
-XX:+UseParallelGC

 

Java常用内存參數

  • -Xmx:jvm堆最大值 (-XX:MaxHeapSize)默认为内存1/4(Runtime.getRuntime().maxMemory()java试图使用的内存总量)jinfo -flag ThreadStackSize 进程号 默认值的话显示为0(默认为1024K)
  • -Xmn:JVM堆年轻代大小
  • -Xms:JVM堆初始值 (-XX:InitialHeapSize)默认为内存1/64(Runtime.getRuntime().totalMemory()返回java虚拟机的内存总量)
  • -Xss:單個綫程棧大小 一般为512K~1024K
  • -XX:MetaspaceSize 设置元空间大小,元空间和永久代类似,都是对JVM规范中对方法区的实现,不过和永久代的区别在于,永久代在堆中存储,元空间不在虚拟机中,使用本地内存,因此默认元空间只受本地内存限制,但默认20M左右,容易溢出(常用设置:-Xmx4096M -Xms128M -Xss1024K -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:UseSerialGC)
  • -XX:+PrintGCDetails 输出详细GC收集日志信息 包括YongGC和FullGC
     
  • -XX:SurvivorRatio 设置JVM中新时代Eden和s0, s1的比例大小(-XX:SurvivorRatio=8, Eden:S0:S1=8:1:1)

 

 

 

  • -XX:NewRatio 配置新生代和老年代在堆中的占比默认为2(-XX:NewRatio=4,设置老年代,剩下新生代为1即为4:1)
  • -XX:MaxTenuringThreshold 设置养老区的最大年龄,默认为15(如果设置为0 的话,则年轻代不经过survivor区直接去老年代,对于老年代比较多的情况,可以提高效率;如果值比较大,可以增加对象在年轻代的时间,增加年轻代被回收的概率)
posted @ 2019-10-13 01:49  shemlothae  阅读(134)  评论(0编辑  收藏  举报