首页 > 其他 > 详细

JVM

时间:2019-10-13 09:12:35      阅读:117      评论:0      收藏:0      [点我收藏+]

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的效率,但算法复杂,系统消耗较大;

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区直接去老年代,对于老年代比较多的情况,可以提高效率;如果值比较大,可以增加对象在年轻代的时间,增加年轻代被回收的概率)

JVM

原文:https://www.cnblogs.com/shemlo/p/11664631.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!