jvm性能瓶颈诊断分析
在java应用程序中,虽然不太容易出现内存溢出的问题,以为jvm会不定期的进行垃圾回收,但是因为程序不合理的写法,也会导致一些数据不能被收集,典型的情况包括:
1、在HashMap中放置大量不用的数据,而没有及时的清理。
2、在web应用中,开发人员喜欢在session中放置状态数据,而没有及时的清理。
3、在session中存放数据还好,因为session终究会有过期时间,但是如果在class的static变量中放置数据就不能被及时垃圾回收
permGen溢出:"java.lang.OutOfMemoryError PermGen space"
/bin/catalina.sh在CATALINA_base:%CATALIAN_base%
JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=64M -XX:MaxPermSize=128m
建议:将相同的第三方jar文件移植到tomcat/share/lib目录下,这样可以减少JAR包重复占用内存的目的
heap溢出:"java.lang.OutOfMemoryError java heap space"
提示:在JVM中如果98%de时间用于GC,且可用的Heap大小不足2%时,将抛出此异常信息,Heap最大不要超过可用的物理内存80%一般要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值
JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:PerSize=64 -XX:MaxPermSize=128m -XX:NewSize=8m -XX:MaxNewSize=16m
jvm内存泄露:垃圾回收时promotion failed
$JAVA_ARGS.=" -Dresin.home=$SERVER_ROOT -server -Xmx3000M -Xms3000M -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=70 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log";
1、原因Survivor空间不足 2、old区空间不足 full gc
带CMS参数的都是和并发回收相关的,CMSInitatingOccupancyFraction,这个参数设置有很大技巧,基本满足(Xmx-Xmn)*(100-CMSInitatingOccupancyFraction)/100>=Xmn就不会出现promotion failed,
jvm:使用-XX:PermSize设置非堆内存初始化值,默认是物理内存的1/64;由XX:MaxpermSize设置最大非内存的大小,默认是物理内存的1/4、
jvm性能瓶颈诊断分析
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Java类加载器详解
賤賤
2019-02-24 17:52:41
java jvm 内存区域
wutong_2018
2019-02-23 00:36:41
虚拟机类加载机制
motouzhixin
2019-02-23 00:20:41
一图搞定【实战Java高并发程序设计】
優優碼
2019-02-23 00:13:28
【转】成为Java顶尖程序员 ,看这10本书就够了
優優碼
2019-02-23 00:13:27
【实战Java高并发程序设计 1】Java中的指针:Unsafe类
優優碼
2019-02-23 00:13:27
实战Java虚拟机之一“堆溢出处理”
優優碼
2019-02-23 00:13:27
如何提高Java并行程序性能
優優碼
2019-02-23 00:13:27
实战Java虚拟机之二“虚拟机的工作模式”
優優碼
2019-02-23 00:13:26
【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference
優優碼
2019-02-23 00:13:26
HotSpot JVM 内存管理
Java進行中
2019-02-22 23:34:12
使用jvisualVm监控本地和远程的jvm
podad
2019-02-22 23:20:16
SpringBoot整合MyBatis-plus
Java仙女
2019-02-22 22:27:54
spring cloud分布式日志链路跟踪
Java仙女
2019-02-22 22:27:54
微信公众号发送消息模板(java)
Java仙女
2019-02-22 22:27:53