1.监控gc的状态使用各种jvm工具,查看当前的日志,分析当前jvm参数的设置,并去分析当前堆内存快照和gc日志,根据实际的各区域内存划分和gc执行的时间,决定是否进行优化。
2.分析结果,判断是不是进行优化如果各项参数设置的比较合理,系统也没有出现超时日志,gc频率也不高,耗时也不长,那么就没有必要进行gc优化,如果gc时间超过了1-3秒,或者频繁的进行gc那么必须进行优化。如果满足下面的指标,则就不需要进行gc:minor gc 执行的时间不超过50msminor gc执行的频率在10秒一次。full gc执行的时间不超过1s,full gc的频率 不低于10分钟一次。
3.调正gc的类型和内存分配如果内存分配的过大或者过小,或者采用的垃圾收集器比较慢,则应该优先调整这些参数,并且先找几台机器进行测试,比较优化后和为优化的性能,并有针对的做出最后选择。
4.不断的分析和调整通过不断的实验的试错,分析并找到最合适的参数。5.全面应用参数如果找到了合适的参数,则将这些参数应用到所有的服务器上。进行后续跟踪。
jvm的常用参数:
1.-verbose :gc
打开gc的跟踪日志
2.-xx :+printGC
打开gc的log开关
3.-xx: +PrintGCDetails
打印GC的详细信息
4.-Xmx20ms
最大堆的空间 -Xms10ms最小堆的空间
5.-Xmn
设置新生代的大小
6.-XX:NewRatio
设置新生代和老年代的比例
7-XX:SurvivorRatio:
设置两个survivor和eden区的比。
8-XX:PermSize
设置永久代的初始化空间大小9.-Xss 栈的大小