美文网首页
JVM常用参数

JVM常用参数

作者: 晚风吹___ | 来源:发表于2022-02-11 11:33 被阅读0次

基础铺垫

1.发生OutOfMemoryError时服务时没有挂的。 2.发生gc时只会打印在控制台,-XX:+PrintGCDetails 3.oom -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/oom 需要启动该配置,方便记录第一现场

-Xms 为jvm启动时分配的内存,比如-Xms200m,表示分配200M -Xmx 为jvm运行过程中分配的最大内存,比如-Xms500m,表示jvm进程最多只能够占用500M内存

-Xms20m -Xmx20m (分配的内存是整个堆内存 新生代+ 老年代) -Xss 是Java虚拟机栈(线程栈,方式的是变量的指针或者地址,需要的内存一般很少,java 默认是1m,建议改成256k)

老年代的内存来源: 1.符合gc 年龄的 2. stw 期间 eden区的前往s区 ,s区放不下去了 放在老年代,有fullgc 的风险。

jvm 分析命名:

jps

jps 查看当前java 的进程,获取进程id

jstack

jstack 查看当前进程下的全部线程信息

jstat

jstat -gcutil pid 1000(打印间隔时间)(打印的是各区的使用的百分比数据) S0:幸存1区当前使用比例 S1:幸存2区当前使用比例 E:伊甸园区使用比例 O:老年代使用比例 M:元数据区使用比例 CCS:压缩使用比例 YGC:年轻代垃圾回收次数 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

jstat -gc pid(直接打印各区的值) S0C:第一个幸存区的大小 S1C:第二个幸存区的大小 S0U:第一个幸存区的使用大小 S1U:第二个幸存区的使用大小 EC:伊甸园区的大小 EU:伊甸园区的使用大小 OC:老年代大小 OU:老年代使用大小 MC:方法区大小 MU:方法区使用大小 CCSC:压缩类空间大小 CCSU:压缩类空间使用大小 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

jmap

jmap -heap pid 查看当前heap 的各项配置

元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制,但可以通过以下参数来指定元空间的大小:

  -XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
  -XX:MaxMetaspaceSize,最大空间,默认是没有限制的。

  除了上面两个指定大小的选项以外,还有两个与 GC 相关的属性:
  -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集
  -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集

jmap -dump:live,format=b,file=java_pid10400.hprof pid 导出快照文件

jinfo

jinfo -flags pid 打印服务启动参数信息(jvm配置相关)

jinfo -sysprops pid 打印服务的系统配置信息(系统本身相关)

查询cpu 使用率最高的线程

ps H -eo pid,tid,%cpu --sort=%cpu |grep pid

visualvm

建议直接下载官方:jdk经过二次包装翻译不太完整 https://visualvm.github.io/download.html

arthas

最佳实践:https://arthas.aliyun.com/doc/quick-start.html#id2

启动: curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar

常见问题: [ERROR] The telnet port 3658 is used by process 20546 instead of target process 27149, you will connect to an unexpected process. [ERROR] 1. Try to restart arthas-boot, select process 20546, shutdown it first with running the 'stop' command. [ERROR] 2. Or try to stop the existing arthas instance: java -jar arthas-client.jar 127.0.0.1 3658 -c "stop" [ERROR] 3. Or try to use different telnet port, for example: java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

原因:上次启动后未正常关闭。 解决方法:按提示进入上次未正常关闭的项目,然后执行shutdown关闭。就可以进入其他项目了

关闭服务:stop

相关文章

网友评论

      本文标题:JVM常用参数

      本文链接:https://www.haomeiwen.com/subject/ilpakrtx.html