3、性能测试执行中要注意fgc情况
如何查看fgc情况,首先要知道java进程id 命令 ps -ef | grep java
admin 18949 18938 99 13:43 pts/2 00:00:31 /opt/taobao/java1/bin/java -Dprogram。name=run。sh -server -Xms1536m -Xmx1536m -XX:NewSize=320m -XX:MaxNewSize=320m -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn500m -XX:MaxTenuringThreshold=5 -Djava。awt。headless=true
运行结果中的 18949是java进程id号
然后运行 [admin@capatest059a ~]$ /opt/taobao/java1/bin/jstat -gcutil 18949 1000(1000是显示多少行)
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 79.97 4.13 40.51 2657 12.652 4 1.349 14.000
针对这几个区的理解:
s0 和 s1 是交换区 当新生区达到一定百分比,这时交换区负责把e区里的对象搬到old 区(o)里,s0和s1不会同时占用的。
OLD 区 是老区 会检查这个区是不是设置的太小了,当E区放满了就会启用YGC,YGCT 是处理YGC的时间,当YGC达到一定值, 就会启用FGC ,而FGC很消耗内存,p区是存放java的类文件,一些静态文件的,这个区基本不变。
运行之前记录下fgc情况,运行之后看下fgc情况,看下这段时间内处理一次fgc所用的时间,判断的参考值 是几百ms是比较多的,一般情况下是几十ms。
针对fgc这块 了解的还是很少,在以后的项目实践中在不断学习深入。
性能测试还有很多东西要去学习,而学习最好的方式就是实践,通过实践才能深入的了解。