java 性能调优工具

一、jstack 用法jstack [option] pid -l long listings,会打印出额外的锁信息,在发生死锁时能够用jstack -l pid来观察锁持有状况 -m mixed mode,不只会输出Java堆栈信息,还会输出C/C++堆栈信息(好比Native方法) 找出进程内最耗费CPU的线程,可使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid printf "%x\n" pid 获得pid的十六进制 jstack pid | grep ` printf "%x\n" pid ` 要留意下面几种状态 死锁,Deadlock(重点关注) 等待资源,Waiting on condition(重点关注) • 等待获取监视器,Waiting on monitor entry(重点关注) 阻塞,Blocked(重点关注) • 执行中,Runnable • 暂停,Suspended • 对象等待中,Object.wait() 或 TIMED_WAITING • 中止,Parkedhtml

二、jmap jmap pid (64位机器jmap -permstat pid) jmap -heap pid查看进程堆内存使用状况 jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,若是带上live则只统计活对象 jmap -dump[:live,]format=b,file=dumpFileName pid 生成dump文件 例如jmap -dump:format=b,file=/tmp/dump.dat 21711java

三、jstat jstat -gc pid 查看gc状况tomcat

JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xmn512m -XX:PermSize=256M -XX:MaxPermSize=256m -Xss256k -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=20 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=73 -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=2 -Djava.awt.headless=true"服务器

上面的配置是基于4G内存设置的,具体修改看本身手上服务器的配置。 参数的含义: -server 告诉tomcat使用server模式 能得到更大并发数和性能 -Xms2048m -Xmx2048m JVM内存的总数 -Xmn512m 年轻代内存大小 -XX:PermSize=256M -XX:MaxPermSize=256m 永久带内存大小 Xss256k 线程大小 -XX:SurvivorRatio=4 设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6 -XX:MaxTenuringThreshold=20 设置垃圾最大年龄。若是设置为0的话,则年轻代对象不通过Survivor区,直接进入年老代。对于年老代比较多的应用,能够提升效率。若是将此值设置为一个较大值,则年轻代对象会在Survivor区进行屡次复制,这样能够增长对象再年轻代的存活时间,增长在年轻代即被回收的几率 -XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快 XX:+UseConcMarkSweepGC CMS gc,这一特性只有jdk1.5即后续版本才具备的功能,它使用的是gc估算触发和heap占用触发。 咱们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,所以使用了CMS GC后能够在GC次数增多的状况下,每次GC的响应时间却很短,好比说使用了CMS GC后通过jprofiler的观察,GC被触发次数很是多,而每次GC耗时仅为几毫秒 -XX:CMSInitiatingOccupancyFraction=73 说明年老代到73%满的时候开始执行对年老代的并发垃圾回收(CMS)。 -XX:+UseCMSCompactAtFullCollection 打开对年老代的压缩。可能会影响性能,可是能够消除碎片 -XX:+CMSParallelRemarkEnabled 下降标记停顿 -XX:CMSFullGCsBeforeCompaction 因为并发收集器不对内存空间进行压缩、整理,因此运行一段时间之后会产生“碎片”,使得运行效率下降。此值设置运行多少次GC之后对内存空间进行压缩、整理。多线程

http://lpy123.blog.51cto.com/6233272/1316106 参考网站:http://blog.csdn.net/lifetragedy/article/details/7708724并发

http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html http://blog.csdn.net/toella/article/details/7297809less

jvm内存模型

相关文章
相关标签/搜索