JVM性能调优
1、发现问题
监控CPU
监控内存
发现发生FULL GC(可能存在大对象,案例:用一个对象统计老师发表的论文,如果一个老师发表很多,可能造成这个对象很大,大对象直接进入老年代,如果堆内存很大,FULL GC时间就很长。)
如何解决
部署多个web容器,减少单个web容器的堆内存。
2、发现问题
场景:
简单抓取系统,抓取网站上的一些数据,分发到其他的应用。
环境:
Windows Server 2003
JDK5
2G内存
Intel Core i3
问题:
不定时出现内存溢出,把堆内存加大,也无济于事,到处堆快照信息,没有任何信息,内存监控也正常。
处理思路
由于这台机器的堆内存比较小,申请的堆内存比较大,在NIO的过程中,直接内存(堆外内存)撑爆了,这个内存溢出不是堆的,而是操作系统的。