性能测试之内存泄漏定位
序言:在稳定性场景测试中,也就是长时间(至少6个小时)压测中比较容易发现内存泄漏问题,以下是一些步骤:监控以及根据现象推断定位代码问题
一、在tomcat中配置jvm参数
背景:jvm虚拟机主要由栈内存和堆内存以及永久 代(方法区),堆=新生代+老年代;新生代=eden+S0+S1;
-
1、进入tomcat中bin目录下catalina.sh文件
增加:
-Xms2048m,初始堆大小,建议<物理内存的1/4,默认值为物理内存的1/64
-Xmx2048m,最大堆大小,建议与-Xms保持一致,默认值为物理内存的1/4
-Xmn512m,新生代大小,建议不超过堆内存的1/2
-Xss256k,线程堆栈大小,建议256k
-XX:PermSize=256m,永久代初始值,默认值为物理内存的1/64
-XX:MaxPermSize=256m,永久代最大值,默认值为物理内存的1/4
-XX:SurvivorRatio=8:年轻带中Eden区和Survivor区的比例,默认为8:1,即Eden(8),From Space(1),ToSpace(1)
-XX:MaxTenuringThreshold=15:晋升到老年代的对象年龄,每个对象坚持过一次MinorGC后对象年龄+1,默认值是15,年龄超过15进入到老年代,该参数在串行GC时有效
-XX:PretenureSizeThreshold=3145728:单位字节,只对Serial和ParNew两款收集器有效,新生代采用Parallel
Scavenge GC时