【本文仅代表作者个人观点,欢迎吐槽,欢迎转载(转载请标明来源)!】
1.上线前:理解并设置合理的参数。
可以参照下述设置进行修改,理解其中参数的含义。
-server -Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=500M -XX:MaxPermSize=500M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log
2.线上:查看gc频率 jstat -gcutil pid 1000
3.找到cpu占用率最高的线程:
1)首先top找到cpu占用率最高的进程号
2)top中shift+h查找出哪个线程消耗的cpu高,记录下线程id,转为l6进制小写。
3)jstack [进程]|grep -A 10 [线程的16进制]
4.分析内存:
jmap -histo pid
1.上线前:理解并设置合理的参数。
可以参照下述设置进行修改,理解其中参数的含义。
-server -Xmx4000M -Xms4000M -Xmn600M -XX:PermSize=500M -XX:MaxPermSize=500M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log
2.线上:查看gc频率 jstat -gcutil pid 1000
3.找到cpu占用率最高的线程:
1)首先top找到cpu占用率最高的进程号
2)top中shift+h查找出哪个线程消耗的cpu高,记录下线程id,转为l6进制小写。
3)jstack [进程]|grep -A 10 [线程的16进制]
4.分析内存:
jmap -histo pid

本文详细介绍了Java应用上线前的GC参数设置方法及线上内存监控策略,包括如何理解并调整服务器、内存分配、垃圾回收策略等关键参数,以及在线上环境中检查GC频率、定位CPU消耗高的线程和分析内存使用情况的步骤。通过实践这些优化措施,可以显著提升应用性能和稳定性。
2888

被折叠的 条评论
为什么被折叠?



