Day7 JVM 调优工具及其实战

2024-12-01  本文已影响0人  小周爱吃瓜

top -p -pid 找出进程号
转为16进制得到xxx,此时线程id的16进制表示为.

jstack pid | grep -A 10 xxx ,线程id. 可以查看堆栈信息中导致cpu飙升的原因.

废弃了,Arthas好用.

jinfo 也可以用jvisualvm代替。 可以查看当前的jvm参数.

Screenshot 2024-12-02 at 22.32.50.png
-XX:CICompilerCount=4 -XX:ConcGCThreads=3 -XX:G1ConcRefinementThreads=10 
-XX:G1HeapRegionSize=1048576 
-XX:InitialHeapSize=268435456 
-XX:MarkStackSize=4194304 
-XX:MaxHeapSize=4294967296 
-XX:MaxNewSize=2576351232 
-XX:MinHeapDeltaBytes=1048576 
-XX:NonNMethodCodeHeapSize=5835340 -XX:NonProfiledCodeHeapSize=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 
-XX:+SegmentedCodeCache 
-XX:+UseCompressedClassPointers 
-XX:+UseCompressedOops 
-XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC 

-参数介绍:

S0C 第一个幸存者大小,MC方法区大小,MU方法区使用的空间.
YGC 年轻代垃圾回收次数
FGC 老年代回收次数.

minor gc后,对象会从eden区域移动到s0区域,s0满了之后放到s1区域,如果younggc过后,s0,s1区域还是放不下,触发老空间担保,放入到老年代中.

首先是对象放在Eden区:之后存满了之后进行垃圾回收(YGC)之后放入到s0区,之后满了在进行回收放入到s1区域,往复,之后超过十五次放入到老年代中,如果比较大对象那么先放入到Eden中之后s0,1放不下那么放入到老年代,如果超大对象(文件)直接放入到老年代。

上一篇 下一篇

猜你喜欢

热点阅读