jvm参数

在学习java的jvm内存板块时,最后总会涉及到一些JVM参数。年轻代、老年代、永久代等各项都可以通过JVM参数来设置大小。在实际设置启动参数时,一般只会设置几个,实际参数有上百个,很多都有默认值。

JVM中,上一个版本的默认值并不一定是下一版本的默认值,不同的GC方式有不同的整套默认值,os不同,jvm位数不同,默认值都会有所区别。jdk1.6 高版本的update中参数得有600个。参数过多,不需要全部了解,只要知道的是找到默认值的方法,掌握默认值的大概量级、在不同的版本下哪些是常用的默认参数,哪些是必须设置的参数,哪些是可以选择的,哪些是尽量不要碰的。

看默认值的方法?

1、通过jinfo来获取。比如,jinfo -flag -PrintHeapAtGC=true

2、通过java -XX:+PrintFlagsFinal -version来获取结果。

3、通过java -XX:+PrintCommandLineFlags来打印真正的参数启动命令。

4、如果这些参数还不够全,可以打开几个开关:

java -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version

大部分的参数都可以安全的看到默认值,但是某些参数需要在生产环境运行时来调整。(后面花括号里面有product的表示可以在启动参数中设置的,花括号里面是”product rw”的表示还可以在jvm启动后使用类似下面的命令来设置这些参数)

项多时,可以根据grep命令指定单一项参数。

JVM参数设置中,有的是同一类型有很多参数,而且都有默认值。如-XX:NewSize、-XX:MaxNewSize,设置了xmn后相当于将这两值值设置为一样大。也有用参数-XX:NewRatio来设置的。不要混用,否则实际就并不知如何执行的。

参数 -XX:+PrintTenuringDistribution 输出中的部分值可以通过其它参数控制。

通过 -XX:InitialTenuringThreshold 和 -XX:MaxTenuringThreshold 可以设定老年代阀值的初始值和最大值。

通过参数 -XX:TargetSurvivorRatio 设定幸存区的目标使用率.例如 , -XX:MaxTenuringThreshold=10 -XX:TargetSurvivorRatio=90 设定老年代阀值的上限为10,幸存区空间目标使用率为90%。

新生代的GC 使用复制算法。

进入老年代的可能:1)复制对象超过gc次数;2)复制对象大于from/to区大小;3)创建对象大于新生代剩余空间大小;
如果新生代过小,会导致新生对象很快就晋升到老年代中,在老年代中对象很难被回收。

有多种方式,设置新生代行为,没有通用准则。我们必须清楚以下2中情况:
1 如果从年龄分布中发现,有很多对象的年龄持续增长,在到达老年代阀值之前。这表示 -XX:MaxTenuringThreshold 设置过大
2 如果 -XX:MaxTenuringThreshold 的值大于1,但是很多对象年龄从未大于1.应该看下幸存区的目标使用率。如果幸存区使用率从未到达,这表示对象都被GC回收,这正是我们想要的。 如果幸存区使用率经常达到,有些年龄超过1的对象被移动到老年代中。这种情况,可以尝试调整幸存区大小或目标使用率。

jvm参数设置输出结果

1、gc日志输出

在 jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime ,

其他还有 -Xloggc:文件路径, -verbose:gc -XX:+PrintTenuringDistribution

-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime

打开这些选项能够记录下所有的安全点(应用程序线程可以被安全地停止掉的那个时间点),而不止是GC暂停的。

2、jvm outOfMemory时dump内存

-XX:+HeapDumpOnOutOfMemoryError

3、jvm FGC前后dump内存

XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC

4 crash日志

Original: https://www.cnblogs.com/kongzhongqijing/p/7324144.html
Author: milkty
Title: jvm参数

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/533663/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球