JVM调优

作者: 我是一名搬运工 | 来源:发表于2019-06-17 14:45 被阅读0次

1)JVM参数

-Xms6000M 堆的初始化内存大小

-Xmx6000M 堆的最大内存/这两个保持一致,配置为可用内存的80%左右

-Xss512k 每个线程的栈大小,因为栈里面只存局部变量和对象引用,所以很小

-XX:NewSize=2250M 新生代内存大小

-XX:MaxNewSize=2250M 新生代最大内存

-XX:PermSize=128M 永久代内存大小(JDK1.7)

-XX:MaxPermSize=256M 永久代内存大小(JDK1.7)

-XX:MetaSpaceSize=128M 元空间内存大小(JDK1.8)

-XX:MaxMetaSpaceSize=256M 元空间内存大小(JDK1.8)

2)调优工具

2.1)JDK自带工具

包括jps jstat jstack jmap jvisualVM

a)Jps:罗列出目前在服务器上运行的java程序及进程ID

b)Jstat:用于输出java程序内存使用情况,包括新生代、老年代、元数据区容量、垃圾回收情况。

S0:幸存1区当前使用比例

S1:幸存2区当前使用比例

E:伊甸园区使用比例

O:老年代使用比例

M:元数据区使用比例

CCS:压缩使用比例

YGC:年轻代垃圾回收次数

YGCT:年轻代垃圾回收消耗时间

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

c)Jmap:用于输出java程序中内存对象的情况,包括有哪些对象,对象的数量。

把内存镜像DUMP下来,然后交给MAT工具进行分析

d)Jstack:用户输出java程序线程栈的情况,常用于定位因为某些线程问题造成的故障或性能问题。

先用top -hp定位哪些线程占用的CPU和内存资源较多,然后把线程ID转成16进制,然后在jstack输出的线程栈信息中找到对应的线程,进行分析。

比如,分析有没有阻塞的线程,有没有死锁的线程,有没有一起在Running的线程等。

e)JvisualVm:对CPU、内存、线程、类都做了监控

2.2)其它工具

MAT(memory analyzer tool),用来分析jmap导出的dump文件。

相关文章

网友评论

      本文标题:JVM调优

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